From 013c5fc4fa560d62d822b1f241b7a01e17d8d35c Mon Sep 17 00:00:00 2001 From: compulim Date: Sat, 24 Oct 2015 13:18:53 -0700 Subject: [PATCH] Use webpack to build --- .gitignore | 1 + package.json | 5 +++- webpack.config.base.js | 44 +++++++++++++++++++++++++++++++++++ webpack.config.development.js | 14 +++++++++++ webpack.config.production.js | 20 ++++++++++++++++ 5 files changed, 83 insertions(+), 1 deletion(-) create mode 100644 webpack.config.base.js create mode 100644 webpack.config.development.js create mode 100644 webpack.config.production.js diff --git a/.gitignore b/.gitignore index c0f0a024..d0a81b97 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ node_modules .DS_Store lib coverage +dist \ No newline at end of file diff --git a/package.json b/package.json index 0f99e4fa..f6a3e3e5 100644 --- a/package.json +++ b/package.json @@ -4,8 +4,11 @@ "description": "Redux DevTools with hot reloading and time travel", "main": "lib/index.js", "scripts": { + "build:lib": "babel src --out-dir lib", + "build:umd": "webpack src/index.js dist/redux-devtools.js --config webpack.config.development.js", + "build:umd:min": "webpack src/index.js dist/redux-devtools.min.js --config webpack.config.production.js", + "build": "npm run build:lib && npm run build:umd && npm run build:umd:min", "clean": "rimraf lib", - "build": "babel src --out-dir lib", "lint": "eslint src test examples", "test": "NODE_ENV=test mocha --compilers js:babel/register --recursive", "test:watch": "NODE_ENV=test mocha --compilers js:babel/register --recursive --watch", diff --git a/webpack.config.base.js b/webpack.config.base.js new file mode 100644 index 00000000..f12d998c --- /dev/null +++ b/webpack.config.base.js @@ -0,0 +1,44 @@ +'use strict'; + +var webpack = require('webpack'); + +var reactExternal = { + root: 'React', + commonjs2: 'react', + commonjs: 'react', + amd: 'react' +}; + +var reduxExternal = { + root: 'Redux', + commonjs2: 'redux', + commonjs: 'redux', + amd: 'redux' +}; + +var reactReduxExternal = { + root: 'ReactRedux', + commonjs2: 'react-redux', + commonjs: 'react-redux', + amd: 'react-redux' +} + +module.exports = { + externals: { + 'react': reactExternal, + 'redux': reduxExternal, + 'react-redux': reactReduxExternal + }, + module: { + loaders: [ + { test: /\.js$/, loaders: ['babel-loader'], exclude: /node_modules/ } + ] + }, + output: { + library: 'ReduxDevTools', + libraryTarget: 'umd' + }, + resolve: { + extensions: ['', '.js'] + } +}; diff --git a/webpack.config.development.js b/webpack.config.development.js new file mode 100644 index 00000000..e509d7cd --- /dev/null +++ b/webpack.config.development.js @@ -0,0 +1,14 @@ +'use strict'; + +var webpack = require('webpack'); +var baseConfig = require('./webpack.config.base'); + +var config = Object.create(baseConfig); +config.plugins = [ + new webpack.optimize.OccurenceOrderPlugin(), + new webpack.DefinePlugin({ + 'process.env.NODE_ENV': JSON.stringify('development') + }) +]; + +module.exports = config; diff --git a/webpack.config.production.js b/webpack.config.production.js new file mode 100644 index 00000000..f4589cc0 --- /dev/null +++ b/webpack.config.production.js @@ -0,0 +1,20 @@ +'use strict'; + +var webpack = require('webpack'); +var baseConfig = require('./webpack.config.base'); + +var config = Object.create(baseConfig); +config.plugins = [ + new webpack.optimize.OccurenceOrderPlugin(), + new webpack.DefinePlugin({ + 'process.env.NODE_ENV': JSON.stringify('production') + }), + new webpack.optimize.UglifyJsPlugin({ + compressor: { + screw_ie8: true, + warnings: false + } + }) +]; + +module.exports = config;