如何自动安装npm对等依赖?

例如,当我安装Angular2时:

npm install --save angular2
temp@1.0.0 /Users/doug/Projects/dougludlow/temp
├── angular2@2.0.0-beta.3
├── UNMET PEER DEPENDENCY es6-promise@^3.0.2
├── UNMET PEER DEPENDENCY es6-shim@^0.33.3
├── UNMET PEER DEPENDENCY reflect-metadata@0.1.2
├── UNMET PEER DEPENDENCY rxjs@5.0.0-beta.0
└── UNMET PEER DEPENDENCY zone.js@0.5.11


npm WARN angular2@2.0.0-beta.3 requires a peer of es6-promise@^3.0.2 but none was installed.
npm WARN angular2@2.0.0-beta.3 requires a peer of es6-shim@^0.33.3 but none was installed.
npm WARN angular2@2.0.0-beta.3 requires a peer of reflect-metadata@0.1.2 but none was installed.
npm WARN angular2@2.0.0-beta.3 requires a peer of rxjs@5.0.0-beta.0 but none was installed.
npm WARN angular2@2.0.0-beta.3 requires a peer of zone.js@0.5.11 but none was installed.

是否有一个神奇的标志,我可以传递给npm,将安装对等依赖?我还没找到……手动复制和粘贴对等依赖项并确保我有正确的版本是很乏味的。

换句话说,我宁愿不去做:

npm install --save angular2@2.0.0-beta.3 es6-promise@^3.0.2 es6-shim@^0.33.3 reflect-metadata@0.1.2 rxjs@5.0.0-beta.0 zone.js@0.5.11

更好的方法是什么?

552074 次浏览

NPM版本7及更新版本

npm v7重新引入了自动的peerDependencies安装。现在在V7中,就像在V3之前的版本中一样,你只需要做npm i,所有的peerDependences都应该自动安装。

他们做了一些更改来修复旧问题,如跨多个依赖项的版本兼容性。 你可以看到讨论公告.

年长的回答

对等依赖的自动安装在npm 3中被明确地删除了,因为它造成的问题比它试图解决的问题要多。你可以在这里阅读,例如:

所以不,基于上述原因,你不能在npm 3以上自动安装它们。

我通过重写package.json来解决这个问题,并使用警告所涉及的确切值。

运行npm时的警告:

npm WARN angular2@2.0.0-beta.3 requires a peer of es6-shim@^0.33.3 but none was installed.
npm WARN angular2@2.0.0-beta.3 requires a peer of reflect-metadata@0.1.2

package.json中,写入

"es6-shim": "^0.33.3",
"reflect-metadata": "0.1.2",

然后,删除node_modules目录。

最后,运行下面的命令:

npm install

项目npm-install-peers将检测对等体并安装它们。

对于v1.0.1,它不支持自动写回package.json,这从本质上解决了我们在这里的需求。

请在飞行中添加您的支持:https://github.com/spatie/npm-install-peers/issues/4

作弊代码在这种情况下很有帮助,还有一些其他的…

├── UNMET PEER DEPENDENCY @angular/common@4.0.2
├── UNMET PEER DEPENDENCY @angular/compiler@4.0.2
├── UNMET PEER DEPENDENCY @angular/compiler-cli@4.0.2
├── UNMET PEER DEPENDENCY @angular/core@4.0.2
├── UNMET PEER DEPENDENCY @angular/forms@4.0.2
├── UNMET PEER DEPENDENCY @angular/http@4.0.2
├── UNMET PEER DEPENDENCY @angular/platform-browser@4.0.2
├── UNMET PEER DEPENDENCY @angular/platform-browser-dynamic@4.0.2 >
  1. 及复印件;粘贴你的错误到你的代码编辑器。
  2. 用你的光标突出不需要的部分。在这种情况下├── UNMET PEER DEPENDENCY
  3. 多次按Command + d
  4. 删除两次。(如果你不小心突出显示了├── UNMET PEER DEPENDENCY ,请按空格)
  5. 向上按一次。添加npm install
  6. 按一下。添加--save
  7. 将您的东西复制回cli并运行
npm install @angular/common@4.0.2 @angular/compiler@4.0.2 @angular/compiler-cli@4.0.2 @angular/core@4.0.2 @angular/forms@4.0.2 @angular/http@4.0.2 @angular/platform-browser@4.0.2 @angular/platform-browser-dynamic@4.0.2 --save

执行这个:npm install-test

我在开发一个有peerDependencies的npm包时遇到了这些错误。我必须确保任何peerDependencies也被列为devDependencies。项目不会自动使用全局安装的包。

安装纱线,然后运行:

yarn global add install-peerdeps

我也面临着同样的问题,幸运的是我找到了一种替代方法来安装对等依赖项和安装命令。

步骤1:$ npm i npm-install-peers -D

以更清楚地了解插件:https://www.npmjs.com/package/npm-install-peers

步骤2:更新package.json为神奇的脚本

  ....
"scripts": {
...
"postinstall": "npm-install-peers"
},
....

步骤3:只需要点击安装命令来安装所有的插件

$ npm install