是否可以为多个项目共享gulp依赖项,而不是在每个项目文件夹中都有它们(因为它是默认的)?
这就是我的目标(每个客户项目都具有相同的结构):
{{1}}
答案 0 :(得分:1)
在Node.js中共享依赖关系很简单:给定需要查找的模块ID,require.resolve
algorithm在node_modules
directories中进行搜索,然后在目录树中执行该操作,直到解析模块:
如果传递给
require()
的模块标识符不是本机模块,并且不以'/'
,'../'
或'./'
开头,那么Node.js将从当前模块的父目录,并添加/node_modules
,并尝试从该位置加载模块。如果在那里找不到它,那么它将移动到父目录,依此类推,直到到达文件系统的根目录。
回到你的问题,你基本上可以将项目放在一个共享node_modules
子目录的目录中,来自任何客户项目目录的每个require
调用都将从该共享{{{ 1}}(如果它存在且未在客户端目录中覆盖)。
node_modules
如果您还将shared
├── node_modules
│ └── ...
├── shared_js
├── shared_scss
├── gulpfile.js
|
├── client-project-1
│ ├── client_js
│ ├── client_scss
│ └── gulpfile.js
|
├── client-project-2
├── client-project-3
└── client-project-n
符号链接到shared_js
,则客户项目将能够shared/node_modules/shared_js
要求它们。
或者,您可以将共享依赖项globally安装到require('shared_js/...')
或$HOME/.node_modules
,但不建议这样做。