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

如何在package.json脚本字符串中嵌入表达式实现版本号自动递增?

自动递增package.json版本号并生成提交信息的实现方法

方法1:用npm自带的version命令(推荐)

npm内置了版本管理工具,直接用version命令就能自动完成版本递增、git提交的操作,无需额外写复杂脚本:

  1. 执行对应版本递增命令,同时指定提交信息模板:

    # 递增补丁版本(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会自动替换为更新后的版本号
  2. (可选)推送提交和标签:

    git push && git push --tags
    

    如果不需要自动打标签,执行命令时加--git-tag-version=false即可:

    npm version patch -m "chore: release %s" --git-tag-version=false
    

方法2:自定义Node脚本

如果需要更灵活的逻辑,可以写一个Node脚本手动处理版本更新和提交:

  1. 在项目根目录创建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}`);
    
  2. 在package.json的scripts中添加命令:

    {
      "scripts": {
        "release": "node release.js"
      }
    }
    
  3. 运行脚本完成发布:

    npm run release
    

注意事项

  • 执行前确保git工作区没有未提交的修改,否则git提交会失败
  • 若需要自动推送,可在脚本或npm命令后追加git push相关操作
  • 自定义脚本可根据需求扩展逻辑,比如版本号校验、分支检查等

内容的提问来源于stack exchange,提问作者Владислав Колесник

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 15:25:22