node.js - 如何自动更新 package.json 文件的版本号
问题描述
我需要package.json
通过 jenkins 自动升级版本。我们有将通过 Jenkins 构建的节点项目,一切都很好,但是当我们每次想要升级时version
,package.json
我们需要手动更改 package.json,然后通过 GitLab 推送到 Jenkins。
有什么办法可以自动化这一步吗?
这是詹金斯文件
pipeline {
agent any
stages {
stage('Build') {
steps {
checkout([$class: 'GitSCM', branches: [[name: 'master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'ID', url: 'https://gitlab.com/company/website.git']]])
sh "pwd"
sh "npm install"
sh "npm run build"
}
}
stage('deploy') {
steps {
sh "scp -v -o StrictHostKeyChecking=no -r /var/lib/jenkins/workspace/project/build/* ubuntu@prod:/var/www/project/"
}
}
}
}
这是 package.json 文件
"name": "my-project",
"version": "1.1.24",
"description": "web application",
"main": "index.js",
"repository": "https://gitlab.com/",
"private": true,
解决方案
使用 linux 中的 awk 命令行工具解决了问题
#!/usr/bin/awk
awk -F'["]' -v OFS='"' '/"version":/{split($4,a,".");$4=a[1]+1"."a[2]"."a[3]+1};1' ./package.json > ./package2.json && mv ./package2.json ./package.json
推荐阅读
- python - 如何使用线程从while循环中获取参数的值?
- .net - 引发无法加载文件“System.Web.Entity”。在项目 .net 上
- flutter - Flutter 插件大小是否必须小于 10 MB?
- java - 与正则表达式键匹配的复杂房间多对多关系
- oracle - PL/SQL 性能分页游标(具有过滤和固定结果大小)
- python - BACpypes - 无法从模拟输入中检索描述属性
- javascript - HTML + JAVASCRIPT 将图像上传到我的服务器文件夹?
- c# - 如何输出偶数和奇数
- algorithm - Madgwick IMU 算法:磁力计是否只为音高值添加任何值?
- capl - 具有消息类型的 CAPL 关联数组