2014-04-18 131 views
1

我正在构建一个项目,我想将它分解成不同的模块。我知道我应该把模块放入node_modules/,但我想暂时将模块提交给主版本控制(我现在使用.gitignore来忽略node_modules/目录)。npm安装在模块中,不在node_modules/

我目前的项目设置:

services/ 
services/service1/package.json 
services/service1/index.js 
services/service2/package.json 
services/service2/index.js 
node_modules/* 
app.js 
package.json 

我的问题是它的工作原理与相对require秒,但在services/*/package.json的依赖性不会被加载。只加载主要的package.json

这是一个很好的方法吗?有更好的吗?我可以运行什么命令来安装所有依赖项?这对我的CI/CD设置来说更是一个问题。

谢谢。

+0

一些模块是特定于平台的,我不认为将它们置于版本控制之下是一个好主意。 – jgillich

回答

0

我这里https://github.com/npm/npm/issues/4017发现了类似的功能要求,似乎你不能做到这一点

一个方法,我看到的是创建一个从node_modules软链接到您想要的服务和维护他们莫名其妙

也许你可以使用https://www.npmjs.org/doc/misc/npm-scripts.htmlpostinstall这个脚本?

+0

我以为'postinstall'中的自定义脚本将是一个好的开始,但我完全没有写出脚本。我发现'找到。 -name package.json -maxdepth 2 -execdir npm install \;'但无法让它按照需要工作。 – Simon

+0

我不擅长bash编程,我个人更喜欢node/js脚本(因为你有npm,你可以从控制台运行js脚本,为什么不) – llamerr