UNPKG

1.47 kBJavaScriptView Raw
1import semver from 'semver';
2import { readFile, writeFile } from './helpers/fs';
3import { execCmd } from './helpers/cp';
4
5const ROOT = process.cwd();
6
7const npmPackageFile = 'package.json';
8
9export default async function release() {
10 const npmPackage = require(`${ROOT}/package.json`);
11
12 let nextVersion;
13 if (semver.valid(process.argv[3])) {
14 nextVersion = process.argv[3];
15 } else {
16 nextVersion = semver.inc(npmPackage.version, process.argv[3], process.argv[4]);
17 }
18
19 if (!process.argv[2]) {
20 console.log('Missing version. Aborting.'); // eslint-disable-line
21 process.exit(-1);
22 }
23
24 /* eslint-disable */
25 console.log(`
26 Creating a new version.
27 Current version: ${npmPackage.version}
28 Next version: ${nextVersion}
29 `);
30 /* eslint-enable */
31
32 console.log('Starting new Gitflow release'); // eslint-disable-line
33 await execCmd(`git flow release start ${nextVersion}`);
34 console.log('Gitflow release created'); // eslint-disable-line
35
36 console.log('ShrinkWrap package'); // eslint-disable-line
37 await execCmd('npm shrinkwrap'); // eslint-disable-line
38 console.log('ShrinkWrap done'); // eslint-disable-line
39
40 console.log('Bumping package.json'); // eslint-disable-line
41
42 const packageData = await readFile(npmPackageFile);
43 const newPackageData = packageData.replace(/.version.*$/m, `"version": "${nextVersion}",`);
44
45 await writeFile(npmPackageFile, newPackageData);
46 console.log('package.json bumped'); // eslint-disable-line
47}