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

1mrurvl1  于 2022-12-03  发布在  Node.js
关注(0)|答案(8)|浏览(500)

例如,安装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

有什么更好的办法呢?

pftdvrlh

pftdvrlh1#

npm版本7及更高版本

npm v7重新引入了peerDependencies的自动安装,现在在V7中,就像在V3之前的版本中一样,你只需要执行一个npm i,所有的peerDependencies都会自动安装。
他们做了一些修改来修复旧的问题,作为跨多个依赖项的版本兼容性。你可以看到discussionannouncement

较早的答案

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

所以不,由于所给的原因,你不能用npm 3以上自动安装它们。

wr98u20j

wr98u20j2#

我用警告的确切值重写了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
6ioyuze2

6ioyuze23#

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

├── 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.* * 复制并粘贴错误到代码编辑器中。
1.用光标突出显示
不需要的部分。在本例中为├── UNMET PEER DEPENDENCY
1.按
command + d数次。
1.按
delete两次**。(如果您不小心突出显示了├── UNMET PEER DEPENDENCY,请按空格键)
1.按一下向上键。加上npm install
1.按下一次。加上--save
1.将您的内容复制回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
rryofs0p

rryofs0p4#

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

wkyowqbh

wkyowqbh5#

项目npm-install-peers将检测对等项并安装它们。
v1.0.1开始,它不支持自动写回package.json,这基本上解决了我们的需要。
请将您的支持添加到飞行中的问题:https://github.com/spatie/npm-install-peers/issues/4

iqxoj9l9

iqxoj9l96#

我也面临着同样的问题,幸运的是我找到了一种替代方法来安装对等依赖项沿着安装命令。
步骤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

k10s72fa

k10s72fa7#

安装Yarn然后运行:

yarn global add install-peerdeps
ryhaxcpt

ryhaxcpt8#

执行此命令:npm install-test

相关问题