npm 脚本使用实践

在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属性

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值