12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- const inquirer = require('inquirer')
- const semver = require('semver')
- const package = require('../package.json')
- const util = require('util')
- const exec = util.promisify(require('child_process').exec)
- async function publish() {
- const config = await inquirer.prompt([
- {
- type: 'list',
- name: 'version',
- message: '请选择本次发布的版本类型:',
- choices: ['Prerelease', 'Patch', 'Minor', 'Major'],
- filter: function(val) {
- return val.toLowerCase()
- }
- },
- {
- type: 'confirm',
- name: 'isLatest',
- message: '是正式版发布吗?',
- default: false
- }
- ])
- if (config.isLatest && config.version === 'prerelease') {
- console.log('PreRelease版本不能发布正式版!')
- return
- }
- if (!config.isLatest && config.version !== 'prerelease') {
- config.version = 'pre' + config.version
- }
- let newVersion = semver.inc(package.version, config.version)
- const publishCommand = 'npm publish' + (config.isLatest ? '' : ' --tag beta')
- const confirmMessage = `请确认核对信息:
- ==========发布信息==========
- 当前版本:${package.version}
- 发布版本:${newVersion}
- 执行命令:npm version ${newVersion} && ${publishCommand}
- ==========发布信息==========
- 以上信息确认无误?`
- const confirm = await inquirer.prompt([
- {
- type: 'confirm',
- name: 'result',
- message: confirmMessage,
- default: false
- }
- ])
- if (confirm.result) {
- console.log('发布中...')
- const { stdout, stderr } = await exec(
- `npm version ${newVersion} && ${publishCommand}`
- )
- console.log('stdout:', stdout)
- console.log('stderr:', stderr)
- console.log('发布成功!')
- }
- }
- publish()
|