将node_modules保持在源代码树之外(不生产)
我更喜欢在我的源代码树之外保留所有生成的文件和依赖关系。
npm和grunt使得困难:npm永远不会允许移动本地node_modules,所以我必须使用--global
和--prefix
。 但显然,咕噜声并不支持这样的计划。
鉴于上述限制,我怎样才能达到目的?
所以,如果我有一个项目:
foo/ .git/ src/ gruntfile.js package.json
我不需要额外的文件,特别是node_modules
。 (也bower_components
和build
等,但这是关于npm。)这个目录应该保持不变,而我正在工作和运行它。 就这些。
显然npm link
应该这样做,但是当我尝试它仍然安装在./node_modules
所有依赖./node_modules
。 任何其他的调用我无法理解; 该文件不清楚。
一个相关的build议是使用另一个符号链接到我的gruntfile或package.json目录,但是grunt只是解决了符号链接,并继续在我的原始目录中工作!
到目前为止,最接近的我是来自我的项目链接到例如~/.cache/foo/node_modules
。 虽然它保持沉默,但我仍然有这个链接凌乱我的工作空间。
我想知道是否有更好的方法。 npm install
, npm link
, ln
, ~/.cache
, NODE_PATH
和PWD
允许我从源代码树运行我的项目,并保持所有非源文物的清洁?
与标准游泳是非常糟糕的想法®。
你可以 (也应该)做的是将node_modules/
添加到你的.gitignore
(或者你的给定的源代码pipe理系统的任何忽略文件),所以你不要这些文件的版本 。
另外,你可以使用像src/
这样的目录来组织你的代码,并从强制configuration文件( package.json
, Gruntfile.coffee
等)中“遮蔽”它。