Node.js 如何自动安装npm对等依赖项?

Node.js 如何自动安装npm对等依赖项?,node.js,npm,Node.js,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-metadat

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

更好的方法是什么?

npm 3明确删除了对等依赖项的自动安装,因为它会导致比试图解决的问题更多的问题。您可以在此处阅读,例如:

因此,不,由于给出的原因,您不能在npm 3以上的情况下自动安装它们

NPM V7

NPM v7重新引入了自动peerDependencies安装。 他们已经做了一些更改,以修复旧问题,如跨多个依赖项的版本兼容性。 您可以看到讨论和公告


现在在V7中,就像在V3之前的版本中一样,您只需要执行一个
npm i
,所有的peerDependence都应该自动安装。

我通过重写
包解决了这个问题。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\u模块
目录

最后,运行以下命令:

npm install
该项目将检测对等点并安装它们

v1.0.1
开始,它不支持自动回写
package.json
,这基本上解决了我们在这里的需求


请添加您对飞行中问题的支持:

作弊代码在此场景和其他一些场景中非常有用

├── 未满足的对等依赖@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
├── 角度/平台未满足对等依赖性-browser@4.0.2
├── 角度/平台浏览器未满足对等依赖关系-dynamic@4.0.2 >
  • 将错误复制并粘贴到代码编辑器中
  • 用光标突出显示不需要的部分。在这种情况下,
    ├── 未满足的对等依赖关系
  • 按几次command+d
  • 按两次删除按钮。(如果意外突出显示
    ├── 未满足的对等依赖关系
  • 按一下。添加
    npm安装
  • 按下一次。添加
    --保存
  • 将您的内容复制回cli并运行
  • npm安装@angular/common@4.0.2@棱角/compiler@4.0.2@angular/compiler-cli@4.0.2@棱角/core@4.0.2@棱角/forms@4.0.2@棱角/http@4.0.2@角度/平台-browser@4.0.2@角度/平台浏览器-dynamic@4.0.2--保存
    
    执行此命令:
    npm安装测试

    我在开发具有
    对等依赖项的npm包时遇到了这些错误。我必须确保所有
    peerdependency
    也被列为
    devdependency
    。项目不会自动使用全局安装的软件包。

    先安装,然后运行


    纱线全球添加安装peerdeps

    您已经解决了该问题吗?我在安装angular2时也有同样的问题。即使在手动安装带有-g标志的es6 promise并重新尝试npm安装-g angular2之后,我也会收到相同的错误/警告,即5个未满足的对等依赖项es6 promise、es6 shim、reflect metadata、rxjs和zone。js@nttakr-是的,安装作为对等依赖项的确切版本可以消除警告。您不希望全局安装它们(使用-g标志)。您希望在本地安装它们(-S标志),但正如我所说的,它们必须是精确的版本(即:
    angular2@2.0.0-beta.3
    要求
    es6承诺^3.0.2
    )。但是,我想知道是否有一个命令/标志可以自动安装对等依赖项。@DouglasLudlow您使用的是什么版本的NPM?@peteb:
    NPM-v
    =>
    3.5.3
    运行
    NPM安装[PACKAGE]
    对于错过对等的包,这是我的伎俩。显然,这并不能解决OP的问题,但我花了很多时间研究它,所以如果这对某人有帮助的话……是的,我看到了:。。。我只是希望你仍然可以选择安装一个标志或东西他们。我想我得开个玩笑了。你是怎么处理这种问题的?我不是npm专家,所以当我读到“x需要一个y的对等体,但没有找到”时,我会问自己,“哪个对等体?”和“我如何才能让一切都恢复正常?”有一个过程吗?你会深入研究x和y的代码直到你发现遗漏了什么吗?一旦你发现遗漏了什么,你下一步该怎么做?谢谢啊,这是一个英语问题:“x需要一个y的对等机,但没有安装”应该是“x需要对等机,y,但y没有安装”。我理解为“X需要Y的同行之一,但没有安装对等体,我们不告诉你Y Y的对等体你需要什么”。“多余”是因为你需要把它们添加到包依赖关系中。我想在这里加一点,你应该在ang2中考虑这个bug。真正的解决方案是,该软件包的作者停止将明显依赖的内容列为对等依赖项。也许
    npm缓存清理
    npm安装
    可能比擦除节点模块更好?我总是避免删除node_模块,我喜欢找出问题所在,而不是将目录吹走。我认为这对人们来说不是一个非常安全的想法,只是让它工作。他们有更高的更改,可能会加剧冲突:代码与其库不匹配。在尝试运行npm clean cache时出现以下错误消息:npm