来个正则大佬 匹配下?

写个js 正则
匹配

"name": "@packages/ui-b",
"version": "0.0.18",
"element-ui": "^2.15.12",

的 version 值,然后把他最后一位 +1 变成 0.0.19

"name": "@packages/ui-b",
"version": "0.0.19",
"element-ui": "^2.15.12",
阅读 2.5k
4 个回答

提升版本号,直接用 npm 命令不香么

npm version patch --no-git-tag-version
  • npm version patch 会自增 package.json 的 patch 版本号
  • npm version minor 会自增 package.json 的 minor 版本号并重置 patch 为 0
  • npm version major ……你猜
  • 不带其他参数的情况,会自动提交 Git 并打个版本标签
  • --no-git-tag-version 参数或 --git-tag-version=false 可以不提交,不打标签

image.png

这个不就是JSON吗, 不能用对象名.version拿到0.0.18然后split('.')得到arr = [0, 0, 18] 然后arr[2] = Number(arr[2]) + 1, 最后对象名.version = arr.join('.')

是因为什么原因一定要用正则呢

const pkg = `"name": "@packages/ui-b",
  "version": "0.0.18",
    "element-ui": "^2.15.12",`
    
const reg = /(?<=\"version\":\s*\")[0-9.]*/
const res = pkg.replace(reg, ($1) => {
  return $1.replace(/\d*$/, ($1) => Number($1 || 0) + 1)
})
const regex = /"version\":\s*([\d\.]+)\.([\d\.]+)\.([\d\.]+)/

const str = `"name": "@packages/ui-b",
  "version": "0.0.18",
    "element-ui": "^2.15.12",`


function replacer(match, p1, p2, p3) {
  p3=Number(p3)+1
  return [p1, p2, p3].join(".");

  
}

let str2= str.replace(regex,replacer)

console.log(str2)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题