在19年中做H5组件库的过程中,对于组件库版本管理上没有上心,每一次发布与变更,只是简单的修改一下package.json文件中version版本号,时间久了,就不记得自己曾经最新的版本号了,可以通过npm库中发布的版本对比找回,通过对npm使用指南调研,写了一个pkm工具来管理组件库发布的版本号
pkm.js代码如下:
let fs = require('fs')
let packageJSON = require('./package.json')
let options = process.argv
let version = packageJSON.version
let analysisOptions = (options) => {
let obj = {}
for(let opt of options ){
if(opt.indexOf('=') > -1){
let arr = opt.split('=')
obj[arr[0]] = arr[1]
}
}
return obj
}
let analysisOptionsResult = analysisOptions(options)
let generateVersionForPackage = ({type = null, oldVersion }) => {
var oldVersionArr = oldVersion.split(".");
var firstNum = +oldVersionArr[0];
var secondNum = +oldVersionArr[1];
var thirdNum = +oldVersionArr[2];
switch (type) {
case 'release' :
++secondNum
break
case 'hotfix':
++thirdNum
break
default:
break
}
console.log(`${firstNum}.${secondNum}.${thirdNum}`)
return `${firstNum}.${secondNum}.${thirdNum}`
}
let newVersion = generateVersionForPackage(Object.assign(analysisOptionsResult,{oldVersion: version}))
Object.assign(packageJSON,{version: newVersion})
fs.writeFileSync('package.json', JSON.stringify(packageJSON,null,2))
参考npm使用指南: http://www.ruanyifeng.com/blog/2016/10/npm_scripts.html
使用方法:
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint",
"prerelease": "node pkm type=hotfix",
"release": "vue-cli-service build --target lib --name zxw-mui ./src/components/index.js",
"postrelease": "npm publish"
},
其中自定义脚本命令 prerelease,release,postrelease三个命令,在发布的过程中只需要执行release命令即可,无需每次发布前手动修改package.json文件的version属性