Node.js 如何自动安装npm对等依赖项?
例如,当我安装Angular2时: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
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明确删除了对等依赖项的自动安装,因为它会导致比试图解决的问题更多的问题。您可以在此处阅读,例如:
现在在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 >
├── 未满足的对等依赖关系
├── 未满足的对等依赖关系
)npm安装
--保存
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