NPM包作为self的嵌套依赖

时间:2013-07-04 19:30:29

标签: node.js module dependencies npm

我有一个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并不总是包的根目录。

2 个答案:

答案 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)

想出一个很好的自动化方法:

  1. 将此文件添加到您的项目中:cyclic.js
  2. 将以下内容添加到package.json个文件中:

    "scripts": {
        "preinstall": "node ./cyclic.js"
    }
    
  3. 使用此解决方案,当您运行npm install时,它会自动强制为您安装循环相关性而不会出错。