forked from vuejs/vue-cli
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrelease.js
81 lines (70 loc) · 2.03 KB
/
release.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
process.env.VUE_CLI_RELEASE = true
const execa = require('execa')
const semver = require('semver')
const inquirer = require('inquirer')
const { syncDeps } = require('./syncDeps')
const cc = require('conventional-changelog')
const curVersion = require('../lerna.json').version
const release = async () => {
console.log(`Current version: ${curVersion}`)
const bumps = ['patch', 'minor', 'major', 'prerelease']
const versions = {}
bumps.forEach(b => { versions[b] = semver.inc(curVersion, b) })
const bumpChoices = bumps.map(b => ({ name: `${b} (${versions[b]})`, value: b }))
const { bump, customVersion } = await inquirer.prompt([
{
name: 'bump',
message: 'Select release type:',
type: 'list',
choices: [
...bumpChoices,
{ name: 'custom', value: 'custom' }
]
},
{
name: 'customVersion',
message: 'Input version:',
type: 'input',
when: answers => answers.bump === 'custom'
}
])
const version = customVersion || versions[bump]
const { yes } = await inquirer.prompt([{
name: 'yes',
message: `Confirm releasing ${version}?`,
type: 'confirm'
}])
if (yes) {
await syncDeps({
version,
local: true,
skipPrompt: true
})
delete process.env.PREFIX
await execa('git', ['add', '-A'], { stdio: 'inherit' })
await execa('git', ['commit', '-m', 'chore: pre release sync'], { stdio: 'inherit' })
}
await execa(require.resolve('lerna/bin/lerna'), [
'publish',
'--repo-version',
version
], { stdio: 'inherit' })
const fileStream = require('fs').createWriteStream(`CHANGELOG.md`)
cc({
preset: 'angular',
releaseCount: 0,
pkg: {
transform (pkg) {
pkg.version = `v${version}`
return pkg
}
}
}).pipe(fileStream).on('close', async () => {
await execa('git', ['add', '-A'], { stdio: 'inherit' })
await execa('git', ['commit', '-m', `chore: ${version} changelog`], { stdio: 'inherit' })
})
}
release().catch(err => {
console.error(err)
process.exit(1)
})