0

我想将我的 Angular 模块贡献给 npm,我做到了。但是我仍然对如何正确设置 npm 依赖感到困惑。

Angular 模块依赖于@angular/cdk @angular/material @angular/core he. 我注意到 angular-cli 已经自动设置了@angular/core @angular/commoninpeerDependencies属性。我认为@angular/cdketc 与 相同@angular/core,所以我也添加@angular/cdk @angular/material @angular/corepeerDependencies。但是当我创建一个新项目并将这个模块引入项目时,angular-cli 警告我“找不到模块@angular/material”。最后,我通过添加属性@angular/cdk @angular/material @angular/core he来解决问题。dependencies但是我仍然对为什么应该将其添加到dependencies而不是peerDependencies. 此外,我应该将其添加到dependenciesREADME.md 中还是将其添加到 README.md 中,让其他开发人员自行将依赖项引导到项目中。

项目 Github 地址

4

1 回答 1

0

我建议在谷歌上搜索依赖项和对等依赖项之间的区别以获取更多详细信息,但要点是对等依赖项是您希望库的使用者必须与您的包分开安装但对您的包运行来说是必需的.

一般来说,最好的做法是尽可能将依赖项定义为对等依赖项,并且对您来说这完全有意义。为什么,你可能会问?好吧,如果您将角度材料 cdk 的版本定义为依赖项,并且消费者已经在他们的项目中安装了角度材料 cdk,那么您现在将拥有同一库的两个版本,它们可能会相互冲突。

相反,当您定义对等依赖项时,您会说“嘿,除非您安装了材料 cdk,否则此库将无法工作,我将使用任何版本”。这要好得多,因为他们不必安装两次或担心不同的版本冲突。

您列出的所有内容都应该在peerDependencies我放入依赖项的唯一内容中是您的库的核心内容,您不希望消费者开发人员已经在他们的项目中安装了这些内容。由于他们使用的似乎是材料项目的插件,因此这样做是有意义的。尽管现在我访问了您的存储库,但我没有看到任何关于材料 UI 的提及。您确实希望在您的库所需的对等依赖项中非常明确。

于 2019-02-16T17:16:38.083 回答