将node_modules保留在开发中的源代码树之外(不是生产)

时间:2015-01-24 01:24:01

标签: node.js gruntjs npm

我喜欢在处理源代码树时将所有生成的文件和依赖项保留在之外。

npm和grunt使这很难:npm永远不会允许移动本地node_modules,所以我必须使用--global--prefix。但显然,咕噜不支持这样的计划。

鉴于上述限制,我如何实现目标?

所以,如果我有一个项目:

foo/
    .git/
    src/
    gruntfile.js
    package.json

我希望树中没有额外的文件,特别是node_modules。 (还有bower_componentsbuild等,但这是关于npm的。)当我正在处理并运行它时,此目录应保持未触及。就是这样。

显然npm link应该这样做,但是当我尝试时它仍然在./node_modules中安装了所有依赖项。任何其他我无法理解的调用;文档不清楚。

一个相关的建议是使用带有符号链接的另一个目录到我的gruntfile或package.json,但是grunt刚刚解析了符号链接并继续在我的原始目录中工作!

到目前为止,我最接近的是链接到例如我的项目~/.cache/foo/node_modules。虽然它实现了将deps从我的树中取出,但我仍然将这个链接弄乱了我的工作区。

我想知道是否有更好的方法。 npm installnpm linkln~/.cacheNODE_PATHPWD的某些组合是否允许我从源代码树运行我的项目并保持所有非源文物的清洁?

1 个答案:

答案 0 :(得分:5)

违反标准游泳是一个非常糟糕的想法®。

可以(并且应该)做的是将node_modules/添加到您的.gitignore(或者您为给定的源代码管理系统提供的任何忽略文件),这样您就不会t 版本这些文件。

此外,您可以使用src/之类的目录来组织代码,并将其与强制配置文件(package.jsonGruntfile.coffee等)“隔离”。