将node_modules保持在源代码树之外(不生产)

我更喜欢我的源代码树之外保留所有生成的文件和依赖关系。

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

鉴于上述限制,我怎样才能达到目的?

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

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

我不需要额外的文件,特别是node_modules 。 (也bower_componentsbuild等,但这是关于npm。)这个目录应该保持不变,而我正在工作和运行它。 就这些。

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

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

到目前为止,最接近的我是来自我的项目链接到例如~/.cache/foo/node_modules 。 虽然它保持沉默,但我仍然有这个链接凌乱我的工作空间。

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

与标准游泳是非常糟糕的想法®。

可以 (也应该)做的是将node_modules/添加到你的.gitignore (或者你的给定的源代码pipe理系统的任何忽略文件),所以你不要这些文件的版本

另外,你可以使用像src/这样的目录来组织你的代码,并从强制configuration文件( package.jsonGruntfile.coffee等)中“遮蔽”它。