我在NPM上有一个小的angular包,我一直支持它可以在所有新版本的angular中使用。在我的package.json中,我在peerDependencies列表中添加了角,以确保它们始终存在于使用我的库的项目中:
"peerDependencies": {
"@angular/animations": "^7.x",
"@angular/common": "^7.x",
"@angular/core": "^7.x",
"@angular/platform-browser": "^7.x",
"rxjs": "^6.x",
"typescript": ">=3.1.1 <3.3.0",
"zone.js": "^0.8.x"
}但是,在发布每个新的主要版本的major时,我库的用户在执行npm install时经常会遇到控制台中显示的对等依赖不匹配警告,如下所示:
npm WARN ng2-go-top-button@7.1.0 requires a peer of @angular/animations@^7.x but none is installed. You must install peer dependencies yourself.
因此,我的问题是:在我的库中将angular声明为依赖项的正确方法是什么,这样我就不必每次发布新的angular时都更新它。也许我根本不需要peerDependencies?但是,如何确保使用我的库的项目始终具备所有所需的库?提前谢谢。
发布于 2019-07-02 09:01:24
好的,所以我自己想出了一个解决办法,因为我的问题的其他答案不太适合我的问题。
我本可以按照前面的答案使用"*"或"^x.x"版本控制定义"*"和其他依赖项,但这并不完全正确,因为angular的最新版本并不总是完全兼容最新版本的typescript,这就是为什么将依赖项版本设置为"*"可能会导致依赖于我的库的项目中断的原因。
因此,最后,我决定将我的peerDependencies列表保持为- is,并在每次发布新的angular时更新它。这样,我的库将保留兼容的依赖项列表,在开发中不会中断,也不会导致依赖项目中断。
https://stackoverflow.com/questions/56790241
复制相似问题