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

Jenkins中用Sed自动升级package.json版本号(修改第三位)

解决Jenkins中package.json第三位版本号自动升级的问题

我来帮你调整sed命令,精准修改package.json的第三位版本号!

你的现有命令之所以会修改第二位版本号,是因为正则只匹配到了第一个小数点后的内容。咱们换个思路,直接定位到第二个小数点之后的数字段来替换:

推荐的sed命令

sed -i "/version/s/\"version\": \"\([0-9]\+\.[0-9]\+\)\.[0-9]\+\"/\"version\": \"\1.${BUILD_NUMBER}\"/" package.json

命令解释

  • /version/:先定位到包含version关键字的行,避免误改其他字段
  • "version": "\([0-9]\+\.[0-9]\+\)\.[0-9]\+":用括号捕获前两位版本号(比如你的0.0),然后匹配第三位数字
  • "version": "\1.${BUILD_NUMBER}":把捕获到的前两位保留,替换第三位为Jenkins的${BUILD_NUMBER}

更简洁的写法

如果你的版本号格式固定是x.x.x,也可以用更简短的正则,直接替换最后一个小数点后的数字:

sed -i "/version/s/\(\.[0-9]\+\)\"/\.\${BUILD_NUMBER}\"/" package.json

这个命令会匹配版本号行里最后一个.数字"的部分,直接替换成.${BUILD_NUMBER}",效果完全一样。

测试验证

用你的示例package.json片段测试,执行后版本号会从"version": "0.0.0"变成"version": "0.0.${BUILD_NUMBER}"(比如BUILD_NUMBER为222时就是0.0.222),完全符合你的需求。

小提示

如果你的Jenkins节点用的是BSD sed(比如MacOS环境),需要把-i改成-i '',否则会生成备份文件。Linux节点的GNU sed直接用-i就没问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:34:13