Skip to content

Commit c04521f

Browse files
committed
build with webpack and babel instead of browserify
1 parent ca19f45 commit c04521f

File tree

6 files changed

+68
-49
lines changed

6 files changed

+68
-49
lines changed

examples/basic/app.js

-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
/** @jsx React.DOM */
2-
31
var React = require('react');
42
var ReactDOM = require('react-dom');
53
var Menu = require('../../lib/index');

package.json

+5-11
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,11 @@
2121
],
2222
"license": "MIT",
2323
"devDependencies": {
24-
"browserify": "13.0.0",
25-
"browserify-shim": "3.8.12",
24+
"babel-core": "6.13.2",
25+
"babel-loader": "6.2.4",
26+
"babel-plugin-transform-object-rest-spread": "6.8.0",
27+
"babel-preset-es2015": "6.13.2",
28+
"babel-preset-react": "6.11.1",
2629
"envify": "3.4.0",
2730
"expect": "1.14.0",
2831
"jsx-loader": "0.13.2",
@@ -37,7 +40,6 @@
3740
"react": "^0.14.7",
3841
"react-addons-test-utils": "^0.14.7",
3942
"react-dom": "^0.14.7",
40-
"reactify": "^1.1.1",
4143
"rf-release": "0.4.0",
4244
"uglify-js": "2.6.1",
4345
"webpack": "1.13.1",
@@ -57,14 +59,6 @@
5759
"menu",
5860
"dropdown"
5961
],
60-
"browserify-shim": {
61-
"react": "global:React"
62-
},
63-
"browserify": {
64-
"transform": [
65-
"reactify"
66-
]
67-
},
6862
"dependencies": {
6963
"js-stylesheet": "0.0.1"
7064
}

scripts/build

+1-6
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,5 @@
11
#!/bin/sh
22
mkdir -p dist
3-
NODE_ENV=production node_modules/.bin/browserify lib/index.js \
4-
-t reactify \
5-
-t browserify-shim \
6-
-t envify \
7-
--detect-globals false \
8-
-s ReactMenu > dist/react-menu.js
3+
node_modules/.bin/webpack
94
node_modules/.bin/uglifyjs dist/react-menu.js \
105
--compress warnings=false > dist/react-menu.min.js

scripts/dev-examples

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
#!/bin/sh
2-
node_modules/.bin/webpack-dev-server --inline --content-base examples/
2+
node_modules/.bin/webpack-dev-server --inline --config webpack.examples-config.js --content-base examples/

webpack.config.js

+14-29
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,25 @@
1-
var fs = require('fs');
2-
var path = require('path');
3-
4-
var EXAMPLES_DIR = path.resolve(__dirname, 'examples');
5-
6-
function isDirectory(dir) {
7-
return fs.lstatSync(dir).isDirectory();
8-
}
9-
10-
function buildEntries() {
11-
return fs.readdirSync(EXAMPLES_DIR).reduce(function (entries, dir) {
12-
if (dir === 'build')
13-
return entries;
14-
15-
var isDraft = dir.charAt(0) === '_';
16-
17-
if (!isDraft && isDirectory(path.join(EXAMPLES_DIR, dir)))
18-
entries[dir] = path.join(EXAMPLES_DIR, dir, 'app.js');
19-
20-
return entries;
21-
}, {});
22-
}
23-
241
module.exports = {
25-
26-
entry: buildEntries(),
2+
entry: {
3+
'react-menu': './lib/index.js'
4+
},
275

286
output: {
7+
library: "ReactMenu",
8+
libraryTarget: "umd",
299
filename: '[name].js',
30-
chunkFilename: '[id].chunk.js',
31-
path: 'examples/__build__',
32-
publicPath: '/__build__/'
10+
path: 'dist',
3311
},
3412

3513
module: {
3614
loaders: [
37-
{ test: /\.(js|jsx)$/, loader: 'jsx-loader?harmony' }
15+
{
16+
test: /\.js$/,
17+
loader: 'babel',
18+
query: {
19+
presets: ['react', 'es2015'],
20+
plugins: ['transform-object-rest-spread'],
21+
},
22+
}
3823
]
3924
},
4025
};

webpack.examples-config.js

+47
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
var fs = require('fs');
2+
var path = require('path');
3+
4+
var EXAMPLES_DIR = path.resolve(__dirname, 'examples');
5+
6+
function isDirectory(dir) {
7+
return fs.lstatSync(dir).isDirectory();
8+
}
9+
10+
function buildEntries() {
11+
return fs.readdirSync(EXAMPLES_DIR).reduce(function (entries, dir) {
12+
if (dir === 'build')
13+
return entries;
14+
15+
var isDraft = dir.charAt(0) === '_';
16+
17+
if (!isDraft && isDirectory(path.join(EXAMPLES_DIR, dir)))
18+
entries[dir] = path.join(EXAMPLES_DIR, dir, 'app.js');
19+
20+
return entries;
21+
}, {});
22+
}
23+
24+
module.exports = {
25+
entry: buildEntries(),
26+
27+
output: {
28+
filename: '[name].js',
29+
chunkFilename: '[id].chunk.js',
30+
path: 'examples/__build__',
31+
publicPath: '/__build__/'
32+
},
33+
34+
module: {
35+
loaders: [
36+
{
37+
test: /\.js$/,
38+
exclude: [/node_modules/], // speed up examples by not babel-ing dependencies
39+
loader: 'babel',
40+
query: {
41+
presets: ['react', 'es2015'],
42+
plugins: ['transform-object-rest-spread'],
43+
},
44+
}
45+
]
46+
},
47+
};

0 commit comments

Comments
 (0)