-
Notifications
You must be signed in to change notification settings - Fork 257
/
release.js
33 lines (24 loc) · 769 Bytes
/
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
const { execSync } = require('child_process')
const gitStatus = exec('git status --porcelain').stdout
if (gitStatus) {
console.error('Git working directory not clean. Please commit all chances to release a new package to npm.')
console.error('Git status:', gitStatus)
process.exit(2)
}
var versionIncrement = process.argv[process.argv.length - 1]
var versionIncrements = ['major', 'minor', 'patch']
if (versionIncrements.indexOf(versionIncrement) < 0) {
console.error('Usage: node release.js major|minor|patch')
process.exit(1)
}
exec('npm test')
exec('npm version ' + versionIncrement)
exec('git push')
exec('git push --tags')
exec('npm publish')
function exec (cmd) {
var stdout = execSync(cmd, { encoding: 'utf-8' })
return {
stdout
}
}