自动release工具
自动release工具
无聊,写个自动release工具,自动升级版本,自动提交,自动打tag,自动推送到远程仓库。
1. 安装
yarn add chalk semver enquirer execa
2. package.json
"scripts": { "release": "node ./scripts/release.js"},
3. scripts/release.js
const fs = require('fs')
const path = require('path')
const chalk = require('chalk')
const semver = require('semver')
const { version: currentVersion } = require('../package.json')
const { prompt } = require('enquirer')
const execa = require('execa')// 版本列表
const versionIncrements = ['patch','minor','major','prepatch','preminor','premajor','prerelease'
]// 步骤打印
const step = msg => console.log(chalk.green(msg))// 增加版本号
const inc = i => semver.inc(currentVersion, i)// 运行脚本
const run = (bin, args, opts = {}) =>execa(bin, args, { stdio: 'inherit', ...opts })/*** 更新版本号* @param {string} version*/
function updatePackage(version) {const pkgPath = path.resolve(__dirname, '../package.json')const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'))pkg.version = versionfs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + '\n')step(`updated package.json version to ${version}\n`)
}/*** 提交 打标签 推送到远程仓库* @param {string} version*/
async function publish(version) {try {await run('git', ['add', '-A'])await run('git', ['tag', '-a', version, '-m', `Release v${version}`])await run('git', ['commit', '-m', `release: v${version}`])await run('git', ['push', '--tags'])await run('git', ['push'])step(`push version to ${version}\n`)} catch (error) {throw new Error(error)}
}// 主函数
async function main() {let versionconst { release } = await prompt({type: 'select',name: 'release',message: 'Select release type',choices: versionIncrements.map(i => `${i} (${inc(i)})`).concat(['custom'])})if (release === 'custom') {version = (await prompt({type: 'input',name: 'version',message: 'Input custom version',initial: version})).version} else {version = release.match(/\((.*)\)/)[1]}if (!semver.valid(version)) {throw new Error(`invalid target version: ${version}`)}updatePackage(version)await publish(version)
}main().catch(err => {console.error(err)
})
4. 运行
yarn release
5.效果
$ yarn release
yarn run v1.22.17
$ node ./scripts/release.js
? Select release type ...
> patch (0.1.1)minor (0.2.0)major (1.0.0)prepatch (0.1.1-0)preminor (0.2.0-0)premajor (1.0.0-0)prerelease (0.1.1-0)custom
自动release工具相关推荐
- 开源交互式自动标注工具EISeg
在人工智能行业有这么一句话:"深度学习有多智能.背后就有多少人工".这句话直接说出了深度学习从业者心中的痛处,毕竟模型的好坏数据占着很大的因素,但是数据的标注成本却让很多从业者感到 ...
- 20120520 Linux下mysql的自动备份工具
文章摘自:http://hi.baidu.com/vb98/blog/item/2ed90cea835fa4cfd439c97f.html linux下的MySQL自动备份工具-第二版2011-10- ...
- 业界首个高性能交互式自动标注工具EISeg正式开源,跨越式提升你的标注体验...
在人工智能行业有这么一句话:"深度学习有多智能.背后就有多少人工".这句话直接说出了深度学习从业者心中的痛处,毕竟模型的好坏数据占着很大的因素,但是数据的标注成本却让很多从业者感到 ...
- mybatis代码自动生成工具之maven插件mybatis-generator-maven-plugin(mybatis逆向工程)
mybatis自动代码生成工具maven插件可以帮助我们轻松的生成pojo.dao.mapper.xml文件,相比于mybatis-generator等其他方式方便许多,话不多说,上代码 先看一下整体 ...
- SpringBoot的整合(自动生成工具的使用mysql5和mysql8版本的两种版本和两种生成方式)
注意:本篇文章连接的数据库为mysql8.0.16版本的,跟低版本的稍微有些不同. 使用mybatis进行开发的时候,model类.mapper.xml.mapper接口等都自己写十分浪费时间,这里介 ...
- js 刷新页面但是不闪烁_前端开发还在手动刷新页面?手把手教你搭建一个自动刷新工具...
作为一名前端,开发web页面是我们的本职工作.在完成一个页面开发的过程中,保存代码然后手动刷新页面查看效果,这样的动作需要重复无数次,虽然一次这样的动作可能只要花费几秒钟的时间,但是次数多了也挺浪费时 ...
- iOS应用模块化的思考及落地方案(二)模块化自动构建工具的使用
1.0 iOS模块化中的问题 前文已经介绍了模块化的流程及一些常见的问题,我们在这里再次总结一下. 在工作中,当我们开始一个新项目的时候,最先考虑的就是模块化工作. 模块化工作的想法是很美好的,可是执 ...
- 微软开源的自动机器学习工具上新了:NNI概览及新功能详解
作者 | 宋驰 来源 | 微软研究院AI头条(ID: MSRAsia) 2018年9月,微软亚洲研究院发布了第一版 NNI (Neural Network Intelligence) ,目前已在 Gi ...
- 开源!开源!我写的Anto.exe C#代码自动生成工具.欢迎下载。。
在开发的过程中开发人员不得不经常要写很多重复的代码, 为了把精力放到更重要的方面去很多人为都做了N多努力,随便google一下自动生成工具, 你都会很容易得到很多这样的工具.园子就有好几款,其中李天平 ...
最新文章
- python_2开发简单爬虫
- linux ssh连接交换机_java通过ssh协议管理交换机,linux
- 【错误记录】Android 应用安装后出现两个启动图标 ( 排查应用及依赖库中配置了 android.intent.category.LAUNCHER 的 Activity )
- UML静态建模之用例图
- linux:date 命令
- Linux系统软件包的管理 3月30日课程
- 【Python selenium自动化环境配置】4步搞定ChromeDriver版本选择
- PAT甲级1023 大整数加法
- SQL Server 2014新特性:其他
- ModelSim 入门使用教程
- 讲讲那些 H-桥电路 的基本道理
- 无锡高二计算机会考内容,无锡期中考试卷分析,看一看高一高二高三数学都考了哪些...
- TLS Lab(Transport Layer Security Lab,SEED实验)基于PKI实验内容进行中间人攻击实验
- php量表是什么心理量表,气质类型量表——计分标准
- 成为互联网企业家的10个理由
- 并发编程之深入理解java线程
- 图片太大不要慌,简单的调整图片大小
- MoCo v1 文献研究 [自监督学习]
- html制作windows 10,Windows 10迎来Alpha版HTML编辑器应用
- 特斯拉数字车钥匙卡评价
热门文章
- 动漫漫画商城(Spring,SpringMVC,MyBatis,SSM,MYSQL,JSP,H-UI)
- 中国智能互联炊具行业市场供需与战略研究报告
- STM32共用中断和共用中断函数的判断
- A Survey on Neural Speech Synthesis
- vscode之神级插件整理(持续更新)
- 大数算法之大数加减法
- LCN分布式事务框架解决分布式事务一致性问题
- C++与QML交互总结
- python生成word文档的表格_2018-10-04 [日常]用Python读取word文档中的表格并比较
- 编写Windows下父亲儿子女儿放取水果进程同步的演示程序。(C/C++)