12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- #!/usr/bin/env node
- import { execSync } from 'child_process'
- import inquirer from 'inquirer'
- import fs from 'fs'
- function run(cmd) {
- execSync(cmd, { stdio: 'inherit' })
- }
- function getVersion() {
- return JSON.parse(fs.readFileSync('package.json', 'utf8')).version
- }
- async function main() {
- console.log('🚀 开始发布流程...')
- // 选择版本类型(默认 patch)
- const { versionType } = await inquirer.prompt([
- {
- type: 'list',
- name: 'versionType',
- message: '请选择版本类型:',
- default: 'patch',
- choices: [
- { name: '补丁版本 (patch)', value: 'patch' },
- { name: '小版本 (minor)', value: 'minor' },
- { name: '大版本 (major)', value: 'major' },
- ],
- },
- ])
- // 更新版本(会生成 tag)
- run(`npm version ${versionType} -m "new version published: v%s"`)
- const version = getVersion()
- // 选择日志生成模式(默认 incremental)
- const { changelogMode } = await inquirer.prompt([
- {
- type: 'list',
- name: 'changelogMode',
- message: '请选择 changelog 生成模式:',
- default: 'incremental',
- choices: [
- { name: '全量生成(会覆盖整个文件)', value: 'full' },
- { name: '增量生成(只追加本次更新的内容)', value: 'incremental' },
- ],
- },
- ])
- // 生成 changelog
- console.log('📝 正在生成 changelog...')
- if (changelogMode === 'full') {
- run('npx conventional-changelog -p angular -i CHANGELOG.md -s -r 0')
- } else {
- run('npx conventional-changelog -p angular -i CHANGELOG.md -s')
- }
- // 提交 package.json 和 changelog
- try {
- run('git add package.json package-lock.json')
- } catch {
- run('git add package.json') // 兼容没有 package-lock.json 的情况
- }
- run('git add CHANGELOG.md')
- run('git commit -m "chore: update changelog for v' + version + '"')
- // 推送代码 & tag
- run('git push --follow-tags')
- // 成功提示
- console.log('\x1b[36m=========================\x1b[0m')
- console.log('\x1b[32m🎉 发布成功!\x1b[0m')
- console.log(`\x1b[33m📦 版本号:v${version}\x1b[0m`)
- console.log('\x1b[35m⚙️ 部署:\x1b[0m')
- console.log('\x1b[34m * 测试环境:npm run deploy:test\x1b[0m')
- console.log('\x1b[34m * 开发环境:npm run build:dev\x1b[0m')
- console.log('\x1b[34m * 生产环境:npm run build\x1b[0m')
- console.log('\x1b[36m=========================\x1b[0m')
- }
- main()
|