Angular升级后,如何更新子项目库的peerDependencies?
Angular子库peerDependencies版本同步方案
一、使用Angular CLI自动同步
Angular CLI的ng update命令支持针对工作区内的指定子项目更新,能自动将子库的peerDependencies同步到根目录的Angular版本:
- 逐个更新子库:
ng update @angular/core @angular/cli --project=my-library1 ng update @angular/core @angular/cli --project=my-library2 - 批量更新所有子库(bash环境下):
注:for lib in projects/*; do if [ -d "$lib" ]; then lib_name=$(basename "$lib") ng update @angular/core @angular/cli --project="$lib_name" --force fi done--force参数用于跳过版本冲突提示,确认根目录依赖版本正确时再使用。
二、脚本批量修改(快速同步)
如果CLI更新未生效,可通过脚本直接批量替换子库package.json中的Angular版本:
- 先获取根目录的Angular版本(需提前安装
jq:npm install -g jq):ANGULAR_VERSION=$(jq -r '.dependencies["@angular/core"]' package.json) - 批量替换所有子库的Angular相关依赖版本:
for file in projects/*/package.json; do jq --arg ver "$ANGULAR_VERSION" '.peerDependencies |= with_entries(if .key | startswith("@angular/") then .value = $ver else . end)' "$file" > "$file.tmp" && mv "$file.tmp" "$file" done - 验证:打开任意子库的
package.json,确认@angular/core、@angular/common等包的版本已与根目录一致。
内容的提问来源于stack exchange,提问作者Abhijeet Singh
相关产品推荐
相关产品推荐

