背景:本人的我的项目在部署上传之前须要更新版本号能力胜利部署
代码
具体代码如下(nodejs简陋); 正文了主动创立分支+提交动作
;可依据需要自行应用
//build.js文件var exec = require('child_process').exec // 异步子过程var fs = require('fs')var packageJSON = require('./package.json')/** package.json文件的version参数 */var version = packageJSON.version/** 命令行的所有参数 */var options = process.argv/** 命令行的type参数 */var type = null/** 新的version参数 */var newVersion = null//判断命令行是否存在type参数或version参数进行逻辑解决for (let i = 0; i < options.length; i++) { if (options[i].indexOf('type') > -1) { //存在type参数 type = options[i].split('=')[1] } else if (options[i].indexOf('version') > -1) { //存在version参数 newVersion = options[i].split('=')[1] } else { //code }}if (newVersion) { //存在设置version参数则扭转原来的version version = newVersion} else if (type) { //不设置version则依据type来进行批改version version = handleType(version, type)} else { version = null console.log('-----------没有扭转version-----------')}//批改了version则写入if (version) { packageJSON.version = version //同步写入package.json文件 fs.writeFileSync('package.json', JSON.stringify(packageJSON, null, 2)) console.log('-----------更新package的version为:%s参数胜利-----------', version) // handleGitAdd('./package.json') // pullRemote()}/** * 依据分支类型解决版本号version * @param {string} oldVersion 旧的版本号 * @param {string} type 分支类型 * @private */function handleType(oldVersion, type) { var oldVersionArr = oldVersion.split('.') //版本号第一位 如:1.2.3 则为 1 var firstNum = +oldVersionArr[0] //版本号第二位 如:1.2.3 则为 2 var secondNum = +oldVersionArr[1] //版本号第三位 如:1.2.3 则为 3 var thirdNum = +oldVersionArr[2] switch (type) { case 'release': //release分支的解决逻辑 ++secondNum thirdNum = 0 break case 'hotfix': //hotfix分支的解决逻辑 ++thirdNum break default: // 默认依照最小版本解决 ++thirdNum break } return firstNum + '.' + secondNum + '.' + thirdNum}// /**// * 将package.json推送到近程新创建的分支// */// function pullRemote() {// var branch = type + '/' + version// //创立新分支// handleGitCreate(branch)// }// /**// * 创立新分支// * @param {string} branch 分支名// */// function handleGitCreate(branch) {// exec('git branch ' + branch, function (error, stdout, stderr) {// console.log('-----------创立新分支:%s DONE-----------', branch)// //切换分支// handleGitCheckOut(branch)// })// }// /**// * 切换分支// * @param {string} branch 分支名// */// function handleGitCheckOut(branch) {// exec('git checkout ' + branch, function (error, stdout, stderr) {// console.log('-----------切换新分支:%s DONE-----------', branch)// //增加批改文件// handleGitAdd('./package.json')// })// }/** * 增加批改文件 * @param {string} filePath 文件门路 */function handleGitAdd(filePath) { exec('git add ' + filePath, function (error, stdout, stderr) { console.log('[增加批改文件输入:%s]', stdout) //提交文件 handleGitCommit('更新package.json文件') })}/** * 提交文件 * @param {string} prompt commit文字备注 */function handleGitCommit(prompt) { // var branch = type + '/' + version exec('git commit -m "' + prompt + '"', function (error, stdout, stderr) { console.log('[提交批改文件输入:%s]', stdout) //推送分支 handleGitPush() })}/** * 推送分支 */function handleGitPush() { exec('git push ', function (error, stdout, stderr) { console.log('[推送至分支:%s输入:%s]', stdout || error || stderr) console.log('-----------提交批改文件实现-----------') })}/** * 主动生成版本号脚本思路 * 1.获取传进来的参数 √ * 2.依据参数进行逻辑解决 √ * 3.获取package.json中的version参数 √ * 4.批改version的值写入package.json文件 √ * 5.git提交package.json文件 √ */
应用
node build.js --type=hotfix
只批改最小版本node build.js --type=release
批改性能版本node build.js --type=release --version=0.0.8
批改为指定版本