You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Monorepo架构下自动批量更新package.json版本号?

刚好我之前处理过类似的Angular monorepo版本同步问题,给你几个实用的方案,一步搞定两个package.json的版本更新:

方案1:利用npm的生命周期钩子(最推荐)

npm的version命令自带一系列生命周期钩子,其中postversion会在根版本更新完成后自动触发。我们可以用它来同步类库的版本号:

步骤1:添加脚本到根目录的package.json

在根package.json的scripts字段中加入:

{
  "scripts": {
    "postversion": "cd projects/mylibrary && npm version --no-git-tag-version $(jq -r '.version' ../../package.json)"
  }
}

解释:

  • postversion钩子:在npm version完成根版本更新后自动执行
  • jq -r '.version' ../../package.json:读取根目录package.json的版本号(需要先安装jq工具,执行npm install -g jq即可)
  • npm version --no-git-tag-version <版本号>:更新类库的版本,但不生成新的Git标签(根目录已经生成了,避免重复)

替代方案(不用jq)

如果不想依赖jq,可以写个简单的Node脚本sync-version.js放在根目录:

const fs = require('fs');
const path = require('path');

// 读取根项目版本
const rootPkg = JSON.parse(fs.readFileSync(path.join(__dirname, 'package.json'), 'utf8'));
// 读取类库package.json
const libPkgPath = path.join(__dirname, 'projects/mylibrary/package.json');
const libPkg = JSON.parse(fs.readFileSync(libPkgPath, 'utf8'));

// 同步版本并写入
libPkg.version = rootPkg.version;
fs.writeFileSync(libPkgPath, JSON.stringify(libPkg, null, 2) + '\n');

然后把postversion脚本改成:

"postversion": "node sync-version.js"

使用方式

现在只需要执行常规的npm version命令,比如:

npm version patch  # 升级补丁版本(x.y.z+1)
# 或者
npm version minor  # 升级小版本(x.y+1.0)
# 或者
npm version major  # 升级大版本(x+1.0.0)

这条命令会自动先更新根Demo的版本,再同步到类库的package.json。

方案2:自定义一次性脚本

如果不想用生命周期钩子,也可以写一个自定义脚本,直接一次性触发两个版本更新:

在根package.json的scripts里添加:

{
  "scripts": {
    "bump-version": "npm version $1 && cd projects/mylibrary && npm version --no-git-tag-version $1"
  }
}

使用方式

执行时需要通过--传递版本类型参数:

npm run bump-version -- patch

这种方式不需要额外依赖,但需要手动指定版本类型,适合喜欢更直观控制的场景。

注意事项
  • 如果你的Demo项目在dependencies里引用了类库(比如"mylibrary": "file:projects/mylibrary"),版本同步后可以执行npm install确保依赖引用正常,但Angular CLI的monorepo一般会自动处理本地依赖的关联。
  • 默认情况下npm version会自动生成Git标签和提交,如果不需要自动提交,可以加上--no-git-tag-version和--no-commit-hooks参数,但保留Git操作通常更便于版本追踪。

内容的提问来源于stack exchange,提问作者BlueCaret

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:51:29