Skip to content

Commit 37be612

Browse files
committed
Add build system
1 parent c3406ed commit 37be612

File tree

3 files changed

+66
-8
lines changed

3 files changed

+66
-8
lines changed

package.json

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,36 +3,47 @@
33
"version": "4.0.0-pre",
44
"description": "A router for React.js",
55
"repository": "ReactJSTraining/react-router",
6-
"scripts": {
7-
"start": "cd docs && npm start",
8-
"lint": "eslint modules"
9-
},
6+
"license": "MIT",
107
"authors": [
118
"Michael Jackson",
129
"Ryan Florence"
1310
],
14-
"license": "MIT",
15-
"peerDependencies": {
16-
"react": "^15.1.0",
17-
"react-dom": "^15.1.0"
11+
"scripts": {
12+
"start": "cd docs && npm start",
13+
"build-lib": "rimraf lib && babel ./modules -d lib --ignore '__tests__'",
14+
"build-umd": "webpack modules/index.js umd/react-router.js",
15+
"build-min": "webpack -p modules/index.js umd/react-router.min.js",
16+
"build": "node ./scripts/build.js",
17+
"prepublish": "node ./scripts/build.js",
18+
"lint": "eslint modules"
1819
},
1920
"dependencies": {
2021
"history": "^3.0.0",
2122
"path-to-regexp": "^1.5.0"
2223
},
24+
"peerDependencies": {
25+
"react": "^15.1.0",
26+
"react-dom": "^15.1.0"
27+
},
2328
"devDependencies": {
29+
"babel-cli": "^6.10.1",
2430
"babel-core": "^6.9.1",
2531
"babel-eslint": "^6.0.4",
32+
"babel-loader": "^6.2.4",
2633
"babel-preset-es2015": "^6.9.0",
2734
"babel-preset-react": "^6.5.0",
2835
"babel-preset-stage-1": "^6.5.0",
2936
"eslint": "^2.12.0",
3037
"eslint-plugin-import": "^1.8.1",
3138
"eslint-plugin-react": "^5.1.1",
39+
"gzip-size": "^3.0.0",
40+
"in-publish": "^2.0.0",
41+
"pretty-bytes": "^3.0.1",
3242
"react": "^15.1.0",
3343
"react-dom": "^15.1.0",
3444
"react-redux": "^4.4.5",
3545
"redux": "^3.5.2",
46+
"rimraf": "^2.5.2",
3647
"webpack": "^1.13.1",
3748
"webpack-dev-server": "^1.14.1"
3849
},

scripts/build.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
const readFileSync = require('fs').readFileSync
2+
const execSync = require('child_process').execSync
3+
const inInstall = require('in-publish').inInstall
4+
const prettyBytes = require('pretty-bytes')
5+
const gzipSize = require('gzip-size')
6+
7+
if (inInstall())
8+
process.exit(0)
9+
10+
const exec = (command, env) =>
11+
execSync(command, { stdio: 'inherit', env })
12+
13+
const webpackEnv = Object.assign({}, process.env, {
14+
NODE_ENV: 'production'
15+
})
16+
17+
exec('npm run build-lib')
18+
exec('npm run build-umd', webpackEnv)
19+
exec('npm run build-min', webpackEnv)
20+
21+
console.log(
22+
'\ngzipped, the UMD build is ' + prettyBytes(
23+
gzipSize.sync(readFileSync('umd/react-router.min.js'))
24+
)
25+
)

webpack.config.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
const webpack = require('webpack')
2+
3+
module.exports = {
4+
5+
output: {
6+
library: 'ReactRouter',
7+
libraryTarget: 'umd'
8+
},
9+
10+
module: {
11+
loaders: [
12+
{ test: /\.js$/, exclude: /node_modules/, loader: 'babel' }
13+
]
14+
},
15+
16+
plugins: [
17+
new webpack.DefinePlugin({
18+
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'development')
19+
})
20+
]
21+
22+
}

0 commit comments

Comments
 (0)