如何在安装Angular库时自动为宿主应用安装peerDependencies
解决Angular库peerDependencies自动安装问题
方案1:利用npm v7+的原生自动安装特性
从npm 7.x版本开始,npm会自动安装peerDependencies,无需额外配置。如果宿主项目使用的是npm 7及以上版本,直接执行npm install ui,就能自动把你的库中列出的peer依赖安装到宿主项目里。
方案2:兼容旧版npm(v6及以下)的处理
如果宿主项目仍在使用npm v6或更低版本,npm默认不会自动安装peerDependencies,可通过以下两种方式解决:
方式A:添加peerDependenciesMeta配置强制安装
在库的package.json中给每个peer依赖添加optional: false配置,旧版npm安装时就会强制安装这些依赖:
{ "name": "ui", "version": "1.1.18", "peerDependencies": { "wijmo": "^5.20211.794", "@grapecity/wijmo.angular2.all": "^5.20211.794", "@microsoft/signalr": "^6.0.3", "@ng-select/ng-select": "^9.0.1", "@ngx-translate/core": "^14.0.0", "ag-grid-angular": "^28.1.1", "ag-grid-community": "^28.1.1", "ag-grid-enterprise": "^28.1.3", "ngx-mask": "13.1.15", "subsink": "^1.0.2" }, "peerDependenciesMeta": { "wijmo": { "optional": false }, "@grapecity/wijmo.angular2.all": { "optional": false }, "@microsoft/signalr": { "optional": false }, "@ng-select/ng-select": { "optional": false }, "@ngx-translate/core": { "optional": false }, "ag-grid-angular": { "optional": false }, "ag-grid-community": { "optional": false }, "ag-grid-enterprise": { "optional": false }, "ngx-mask": { "optional": false }, "subsink": { "optional": false } }, "dependencies": { "tslib": "^2.3.0" } }
方式B:借助install-peerdeps工具安装
让宿主项目用户通过install-peerdeps命令安装你的库,该工具会自动处理peer依赖的安装:
npx install-peerdeps ui
注意事项
- 确保库的peer依赖版本范围设置合理,避免与宿主项目现有依赖版本冲突。
- 若宿主项目已存在符合版本要求的peer依赖,npm会复用现有版本,不会重复安装。
内容的提问来源于stack exchange,提问作者Mohammad Reza Farahani
相关产品推荐
相关产品推荐

