Skip to content

Commit c1dd0c9

Browse files
committed
Add ES modules to npm package
Also updated build + release scripts.
1 parent 5c0c7cd commit c1dd0c9

File tree

6 files changed

+61
-42
lines changed

6 files changed

+61
-42
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
es
12
node_modules
23
umd
34
/*.js

modules/.babelrc

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
{
22
"presets": [
3-
"es2015-loose",
3+
"../tools/es2015-preset",
44
"stage-1",
55
"react"
66
],
77
"env": {
88
"production": {
99
"plugins": [
10-
"dev-expression",
1110
"transform-react-remove-prop-types"
1211
]
1312
}

package.json

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,38 +3,37 @@
33
"version": "0.1.2",
44
"description": "A reliable way to broadcast state changes to React elements deep in the hierarchy",
55
"repository": "mjackson/react-broadcast",
6-
"authors": [
7-
"Michael Jackson",
8-
"Ryan Florence"
9-
],
106
"license": "MIT",
7+
"author": "Michael Jackson",
8+
"files": [
9+
"Broadcast.js",
10+
"Subscriber.js",
11+
"es",
12+
"index.js",
13+
"umd"
14+
],
1115
"scripts": {
12-
"build": "node ./scripts/build.js",
16+
"build": "node ./tools/build.js",
1317
"clean": "git clean -fdX .",
14-
"build-cjs": "babel ./modules -d . --ignore '__tests__'",
15-
"build-umd": "webpack modules/index.js umd/react-broadcast.js",
16-
"build-min": "webpack -p modules/index.js umd/react-broadcast.min.js",
17-
"prepublish": "node ./scripts/build.js",
18-
"release": "node ./scripts/release.js",
18+
"prepublish": "node ./tools/build.js",
19+
"release": "node ./tools/release.js",
1920
"lint": "eslint modules",
2021
"test": "karma start --single-run"
2122
},
23+
"peerDependencies": {
24+
"react": "15.x"
25+
},
2226
"dependencies": {
2327
"invariant": "^2.2.1",
2428
"prop-types": "^15.5.6"
2529
},
26-
"peerDependencies": {
27-
"react": "15.x"
28-
},
2930
"devDependencies": {
3031
"babel-cli": "^6.10.1",
3132
"babel-core": "^6.17.0",
3233
"babel-eslint": "^7.0.0",
3334
"babel-loader": "^6.2.4",
34-
"babel-plugin-dev-expression": "^0.2.1",
3535
"babel-plugin-transform-react-remove-prop-types": "^0.2.11",
3636
"babel-preset-es2015": "^6.9.0",
37-
"babel-preset-es2015-loose": "^8.0.0",
3837
"babel-preset-react": "^6.5.0",
3938
"babel-preset-stage-1": "^6.5.0",
4039
"eslint": "^3.3.1",

tools/build.js

Lines changed: 30 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const readFileSync = require('fs').readFileSync
1+
const fs = require('fs')
22
const execSync = require('child_process').execSync
33
const inInstall = require('in-publish').inInstall
44
const prettyBytes = require('pretty-bytes')
@@ -7,19 +7,38 @@ const gzipSize = require('gzip-size')
77
if (inInstall())
88
process.exit(0)
99

10-
const exec = (command, env) =>
11-
execSync(command, { stdio: 'inherit', env })
10+
const exec = (command, extraEnv) =>
11+
execSync(command, {
12+
stdio: 'inherit',
13+
env: Object.assign({}, process.env, extraEnv)
14+
})
1215

13-
const webpackEnv = Object.assign({}, process.env, {
16+
console.log('Building CommonJS modules ...')
17+
18+
exec('babel modules -d . --ignore __tests__', {
19+
BABEL_ENV: 'cjs'
20+
})
21+
22+
console.log('\nBuilding ES modules ...')
23+
24+
exec('babel modules -d es --ignore __tests__', {
25+
BABEL_ENV: 'es'
26+
})
27+
28+
console.log('\nBuilding react-media.js ...')
29+
30+
exec('webpack modules/index.js umd/react-media.js', {
1431
NODE_ENV: 'production'
1532
})
1633

17-
exec('npm run build-cjs')
18-
exec('npm run build-umd', webpackEnv)
19-
exec('npm run build-min', webpackEnv)
34+
console.log('\nBuilding react-media.min.js ...')
2035

21-
console.log(
22-
'\ngzipped, the UMD build is ' + prettyBytes(
23-
gzipSize.sync(readFileSync('umd/react-broadcast.min.js'))
24-
)
36+
exec('webpack -p modules/index.js umd/react-media.min.js', {
37+
NODE_ENV: 'production'
38+
})
39+
40+
const size = gzipSize.sync(
41+
fs.readFileSync('umd/react-media.min.js')
2542
)
43+
44+
console.log('\ngzipped, the UMD build is %s', prettyBytes(size))

tools/es2015-preset.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
const buildPreset = require('babel-preset-es2015').buildPreset
2+
3+
const BABEL_ENV = process.env.BABEL_ENV
4+
5+
module.exports = {
6+
presets: [
7+
[ buildPreset, {
8+
loose: true,
9+
modules: BABEL_ENV === 'es' ? false : 'commonjs'
10+
} ]
11+
]
12+
}

tools/release.js

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -22,27 +22,16 @@ const nextVersion = prompt(`Next version (current version is ${getPackageVersion
2222
const isPrerelease = nextVersion.substr(0, 3) === 'pre' || nextVersion.indexOf('-') !== -1
2323

2424
// 1) Make sure the tests pass
25-
exec('npm test -- --single-run')
25+
exec('npm test')
2626

2727
// 2) Increment the package version in package.json
2828
// 3) Create a new commit
2929
// 4) Create a v* tag that points to that commit
3030
exec(`npm version ${nextVersion} -m "Version %s"`)
3131

32-
// 5) Push to the same branch on the git remote (GitHub).
33-
// Do this before we publish in case anyone has pushed
34-
// since we last pulled
35-
exec('git push origin')
36-
37-
// 6) Publish to npm. Use the "next" tag for pre-releases,
32+
// 5) Publish to npm. Use the "next" tag for pre-releases,
3833
// "latest" for all others
3934
exec(`npm publish --tag ${isPrerelease ? 'next' : 'latest'}`)
4035

41-
// 7) Push the v* tag to GitHub
36+
// 6) Push the v* tag to GitHub
4237
exec(`git push -f origin v${getPackageVersion()}`)
43-
44-
// 8) Push the "latest" tag to GitHub
45-
if (!isPrerelease) {
46-
exec('git tag -f latest')
47-
exec('git push -f origin latest')
48-
}

0 commit comments

Comments
 (0)