/
release.js
35 lines (32 loc) · 1.27 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
var vow = require('vow'),
vowNode = require('vow-node'),
childProcess = require('child_process'),
fs = require('fs'),
exec = vowNode.promisify(childProcess.exec),
readFile = vowNode.promisify(fs.readFile),
writeFile = vowNode.promisify(fs.writeFile);
version = process.argv.slice(2)[0] || 'patch';
exec('git pull')
.then(() => exec('npm ci'))
.then(() => exec('npm run build'))
.then(() => exec(`npm version ${version}`))
.then(() => vow.all([
readFile('package.json', 'utf8'),
readFile(__dirname + '/distHeaderTmpl.txt', 'utf8'),
readFile('dist/vidom.js'),
readFile('dist/vidom.min.js')
]))
.spread((packageContent, distHeaderTmpl, distContent, distMinContent) => {
version = JSON.parse(packageContent).version;
var distHeader = distHeaderTmpl.replace('${VERSION}', version);
return vow.all([
writeFile('dist/vidom.js', distHeader + distContent),
writeFile('dist/vidom.min.js', distHeader + distMinContent)
]);
})
.then(() => exec('git push --follow-tags'))
.then(() => exec('npm publish' + (version.includes('rc')? ' --tag next' : '')))
.then(() => {
console.log(`version ${version} has just been released`);
})
.done();