我有一个NPM包(包A),它自己编译自己的最后一个稳定版本。它通过中间Grunt任务(包B)来实现,它本身依赖于包A.因此,依赖链是:
套餐A - >包B(作为devDependency
) - >套餐A(dependency
)
但是,当通过npm install
安装程序包A时,NPM不会将程序包A作为程序包B的依赖项安装,假定它是设计的 - 我认为它试图阻止循环依赖,即使因为程序包B是只有devDependency
,它不会安装在子包A上。
安装儿童套餐A的最少hacky /推荐方法是什么?我的第一个解决方案是添加一个只运行postinstall
的{{1}}脚本,但这会中断,因为cd node_modules/package-B && npm install package-A
的CWD并不总是包的根目录。
答案 0 :(得分:2)
为这样的任务运行js文件怎么样?
var spawn = require("child_process").spawn;
spawn("npm", [ "install", "package-A" ], {
cwd: process.cwd() + "/node_modules/package-B/",
env: process.env
});
我不确定这是否会奏效,但也许它激励你用它做更多的事情;)
答案 1 :(得分:1)
想出一个很好的自动化方法:
cyclic.js
将以下内容添加到package.json
个文件中:
"scripts": {
"preinstall": "node ./cyclic.js"
}
使用此解决方案,当您运行npm install
时,它会自动强制为您安装循环相关性而不会出错。