NPM 包作为 self 的嵌套依赖

Tho*_*mas 5 dependencies module node.js npm

我有一个 NPM 包(包 A),它用自己的最后一个稳定版本自行编译。它通过一个本身依赖于包 A 的中间 Grunt 任务(包 B)来做到这一点。 因此,依赖链是:

套餐 A -> 套餐 B (as devDependency) -> 套餐 A (as dependency)

但是,当包 A 通过 安装时npm install,NPM 不会将包 A 作为包 B 的依赖项安装,推测是设计 - 我认为它试图防止循环依赖,即使因为包 B 只是 a devDependency,它也不会无论如何安装在子包 A 上。

安装子包 A 的最简单/推荐的方法是什么?我的第一个解决方案是添加一个postinstall简单地运行的脚本cd node_modules/package-B && npm install package-A,但这会中断,因为 的 CWDpostinstall并不总是包的根目录。

gus*_*nke 4

为这样的任务运行一个 js 文件怎么样?

var spawn = require("child_process").spawn;
spawn("npm", [ "install", "package-A" ], {
  cwd: process.cwd() + "/node_modules/package-B/",
  env: process.env
});
Run Code Online (Sandbox Code Playgroud)

我不确定这是否有效,但也许它会激励您用它做更多事情;)