You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

65 lines
1.7 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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()