多项目共享 - 共享node_modules

  • 作者:KK

  • 发表日期:2016.8.5


前面的例子都是说在项目的开发代码里放个gulpfile.js写构建逻辑,其中gulpfile.js里require的一些gulp插件模块是默认在gulpfile.js所在的目录去查找node_modules的

当公司有多个项目都需要用gulp做构建时,如果每个项目下都执行npm install --save-dev gulp-xxxx这些安装命令,那就会每个项目下都装出一堆一模一样的node_module模块了,而且细心的你一定能发现里面的目录还很深,深不可测啊

好了现在咱们就是希望别每个项目都有一堆的node_module,只有一套,然后各项目共用

思路就是让不同项目下的gulpfile.js执行require引入模块时能共同去找一个公共目录

比如这个目录是“D:\projects\common\node_modules”,那就修改NODE_PATH这个环境变量,添加“D:\projects\common\node_modules”这个路径进去即可


为什么我不说用package.json再install?

很明显我上面提到如果每个项目都装一堆node_modules那样太多文件了,基本都是一样的模块

除非每个项目都用了不同版本的构建模块,各有不同的构建细节处理需求,但实际上很少,这种情况太极端,极端到那样就不用来解决共享node_modules的问题了,各装各的就是。既然要解决共享问题,那意味着我们都想各个项目用同样的构建插件和版本

所以如果在gulpfile.js里执行npm init来产生一个package.json,然后放到其他项目里再执行npm install(根据package.json的清单去自动下载安装各个模块),那其实最终就变成了又在另一个项目下产生了一份node_modules的现象

所以通过修改环境变量让各个项目都去同一个目录下require模块是我主张的解决方案