如何在package.json脚本字符串中嵌入表达式实现版本号自动递增?
自动递增package.json版本号并生成提交信息的实现方法
方法1:用npm自带的version命令(推荐)
npm内置了版本管理工具,直接用version命令就能自动完成版本递增、git提交的操作,无需额外写复杂脚本:
执行对应版本递增命令,同时指定提交信息模板:
# 递增补丁版本(0.1.2 → 0.1.3) npm version patch -m "chore: release %s"patch表示递增第三段版本号,若要递增次要版本(0.1.2→0.2.0)用minor,递增主版本(0.1.2→1.0.0)用major-m参数指定提交信息,%s会自动替换为更新后的版本号
(可选)推送提交和标签:
git push && git push --tags如果不需要自动打标签,执行命令时加
--git-tag-version=false即可:npm version patch -m "chore: release %s" --git-tag-version=false
方法2:自定义Node脚本
如果需要更灵活的逻辑,可以写一个Node脚本手动处理版本更新和提交:
在项目根目录创建
release.js文件:const fs = require('fs'); const { execSync } = require('child_process'); // 读取并解析package.json const pkgPath = './package.json'; const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8')); // 拆分版本号并递增补丁版本 const versionParts = pkg.version.split('.').map(Number); versionParts[2] += 1; // 第三段是补丁版本,若要改次要/主版本,修改对应下标(0为主版本,1为次要版本) const newVersion = versionParts.join('.'); // 更新package.json pkg.version = newVersion; fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2)); // 执行git提交 execSync('git add package.json'); execSync(`git commit -m "chore: release ${newVersion}"`); // (可选)打标签 // execSync(`git tag v${newVersion}`);在
package.json的scripts中添加命令:{ "scripts": { "release": "node release.js" } }运行脚本完成发布:
npm run release
注意事项
- 执行前确保git工作区没有未提交的修改,否则git提交会失败
- 若需要自动推送,可在脚本或npm命令后追加
git push相关操作 - 自定义脚本可根据需求扩展逻辑,比如版本号校验、分支检查等
内容的提问来源于stack exchange,提问作者Владислав Колесник
相关产品推荐
相关产品推荐

