Skip to content

Commit ace0dd4

Browse files
committed
Add release script
1 parent 9365828 commit ace0dd4

2 files changed

Lines changed: 49 additions & 2 deletions

File tree

package.json

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
"name": "react-stdio",
33
"version": "2.0.7",
44
"description": "Render React.js components on any backend",
5+
"author": "Michael Jackson",
6+
"license": "MIT",
57
"bin": "./bin/react-stdio",
68
"preferGlobal": true,
79
"repository": {
@@ -12,8 +14,6 @@
1214
"bin",
1315
"server.js"
1416
],
15-
"author": "Michael Jackson",
16-
"license": "MIT",
1717
"dependencies": {
1818
"JSONStream": "^1.0.7",
1919
"babel-preset-es2015": "^6.3.13",
@@ -23,5 +23,8 @@
2323
"invariant": "^2.2.0",
2424
"react": "^0.14.5",
2525
"react-dom": "^0.14.5"
26+
},
27+
"devDependencies": {
28+
"readline-sync": "^1.4.1"
2629
}
2730
}

scripts/release.js

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
const resolvePath = require('path').resolve
2+
const readFileSync = require('fs').readFileSync
3+
const execSync = require('child_process').execSync
4+
const prompt = require('readline-sync').question
5+
6+
const exec = (command) =>
7+
execSync(command, { stdio: 'inherit' })
8+
9+
const getPackageVersion = () =>
10+
JSON.parse(readFileSync(resolvePath(__dirname, '../package.json'))).version
11+
12+
if (process.cwd() !== resolvePath(__dirname, '..')) {
13+
console.error('The release script must be run from the repo root')
14+
process.exit(1)
15+
}
16+
17+
// Get the next version, which may be specified as a semver
18+
// version number or anything `npm version` recognizes. This
19+
// is a "pre-release" if nextVersion is premajor, preminor,
20+
// prepatch, or prerelease
21+
const nextVersion = prompt(`Next version (current version is ${getPackageVersion()})? `)
22+
const isPrerelease = nextVersion.substring(0, 3) === 'pre'
23+
24+
// 1) Increment the package version in package.json
25+
// 2) Create a new commit
26+
// 3) Create a v* tag that points to that commit
27+
exec(`npm version ${nextVersion} -m "Version %s"`)
28+
29+
// 4) Push to GitHub master. Do this before we publish in
30+
// case anyone has pushed to GitHub since we last pulled
31+
exec('git push origin master')
32+
33+
// 5) Publish to npm. Use the "next" tag for pre-releases,
34+
// "latest" for all others
35+
exec(`npm publish --tag ${isPrerelease ? 'next' : 'latest'}`)
36+
37+
// 6) Push the v* tag to GitHub
38+
exec(`git push -f origin v${getPackageVersion()}`)
39+
40+
// 7) Push the "latest" tag to GitHub
41+
if (!isPrerelease) {
42+
exec('git tag -f latest')
43+
exec('git push -f origin latest')
44+
}

0 commit comments

Comments
 (0)