npm:确认这种情况下npm install的行为吗?为什么没有嵌套的依赖关系?

时间:2019-06-26 02:19:30

标签: npm

在应用程序中,安装npm软件包时遇到一些问题。

package.json如下:

"dependencies": {
    "@angular/cdk": "7.2.1",
    "privateLib": "19.0.0",
}

我只显示关键部分并隐藏其他内容。 privateLib是一个私有软件包,您可以忽略其名称。

npm install之后,它报告以下warn消息:

npm WARN privateLib@19.0.0 requires a peer of @angular/cdk@7.3.7 but none is installed. You must install peer dependencies yourself.

然后我检查安装的@angular/cdk是版本7.2.1

令人困惑的是,在privateLib内部,它自己的package.json配置如下:

"dependencies": {
    "@angular/cdk": "7.3.7",
}

我检查了@angular/cdk内没有privateLib软件包。那么,为什么它不在7.3.7中安装自己的版本nested way依赖项。此行为与npm3文档不同:https://npm.github.io/how-npm-works-docs/npm3/how-npm3-works.html
我正在使用npm v6。

1 个答案:

答案 0 :(得分:1)

确实https://blog.npmjs.org/post/110924823920/npm-weekly-5

  

我们还将在npm @ 3中更改peerDependencies的行为。我们将不再自动下载对等依赖项。相反,如果尚未安装对等依赖项,我们会警告您。这需要您手动解决peerDependency冲突,但从长远来看,这应该会减少您最终因软件包的依赖关系而陷入困境的可能性。

尝试使用https://github.com/spatie/npm-install-peers来方便。