From bc524bd43a682124a90d75f35b3159ad35a2d2eb Mon Sep 17 00:00:00 2001 From: Ian Storm Taylor Date: Wed, 21 Feb 2018 17:48:08 -0800 Subject: [PATCH] update webpack and rollup configs --- .gitignore | 1 + package.json | 10 +++--- rollup.config.js | 26 -------------- support/rollup/config.js | 26 ++++++++++++++ support/rollup/{packages.js => factory.js} | 0 .../{webpack.config.js => webpack/config.js} | 36 +++++++------------ 6 files changed, 45 insertions(+), 54 deletions(-) delete mode 100644 rollup.config.js create mode 100644 support/rollup/config.js rename support/rollup/{packages.js => factory.js} (100%) rename support/{webpack.config.js => webpack/config.js} (71%) diff --git a/.gitignore b/.gitignore index 0e8d50e7b..c7704af82 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ # Build files. *.js.map +build/ dist/ lib/ diff --git a/package.json b/package.json index 0fe146505..11ecad2f7 100644 --- a/package.json +++ b/package.json @@ -89,17 +89,17 @@ "benchmark": "mkdir -p ./tmp && cross-env BABEL_ENV=test babel-node ./node_modules/.bin/_matcha --reporter ./support/benchmark/reporter ./packages/*/benchmark/index.js > ./tmp/benchmark-comparison.json && cross-env BABEL_ENV=test babel-node ./support/benchmark/compare", "benchmark:save": "mkdir -p ./tmp && cross-env BABEL_ENV=test babel-node ./node_modules/.bin/_matcha --reporter ./support/benchmark/reporter ./packages/*/benchmark/index.js > ./tmp/benchmark-baseline.json", "bootstrap": "lerna bootstrap && yarn build", - "build": "rollup --config", - "build:gh": "cross-env NODE_ENV=production rollup --config && cross-env NODE_ENV=production webpack --config support/webpack.config.js", + "build": "rollup --config ./support/rollup/config.js", + "build:gh-pages": "cross-env NODE_ENV=production rollup --config ./support/rollup/config.js && cross-env NODE_ENV=production webpack --config support/webpack/config.js", "clean": "lerna run clean && rm -rf ./node_modules ./dist ./examples/dist", - "gh-pages": "yarn build:gh && gh-pages --dist ./examples/dist", + "gh-pages": "yarn build:gh-pages && gh-pages --dist ./examples/dist", "lint": "eslint packages/*/src packages/*/test examples/*/*.js examples/dev/*/*.js && prettier --list-different '**/*.{js,jsx,md,json,css}'", "open": "open http://localhost:8080", "prettier": "prettier --write '**/*.{js,jsx,md,json,css}'", "release": "yarn test && yarn lint && lerna publish && yarn gh-pages", - "server": "webpack-dev-server --config support/webpack.config.js", + "server": "webpack-dev-server --config ./support/webpack/config.js", "start": "npm-run-all --parallel --print-label watch server", "test": "cross-env BABEL_ENV=test mocha --require babel-core/register ./packages/*/test/index.js", - "watch": "rollup --config --watch" + "watch": "rollup --config ./support/rollup/config.js --watch" } } diff --git a/rollup.config.js b/rollup.config.js deleted file mode 100644 index ca64e3850..000000000 --- a/rollup.config.js +++ /dev/null @@ -1,26 +0,0 @@ -import factory from './support/rollup/packages' -import slate from './packages/slate/package.json' -import slateBase64Serializer from './packages/slate-base64-serializer/package.json' -import slateDevLogger from './packages/slate-dev-logger/package.json' -import slateHtmlSerializer from './packages/slate-html-serializer/package.json' -import slateHyperscript from './packages/slate-hyperscript/package.json' -import slatePlainSerializer from './packages/slate-plain-serializer/package.json' -import slatePropTypes from './packages/slate-prop-types/package.json' -import slateReact from './packages/slate-react/package.json' -import slateSchemaViolations from './packages/slate-schema-violations/package.json' -import slateSimulator from './packages/slate-simulator/package.json' - -const configurations = [ - ...factory(slate), - ...factory(slateBase64Serializer), - ...factory(slateDevLogger), - ...factory(slateHtmlSerializer), - ...factory(slateHyperscript), - ...factory(slatePlainSerializer), - ...factory(slatePropTypes), - ...factory(slateReact), - ...factory(slateSchemaViolations), - ...factory(slateSimulator), -] - -export default configurations diff --git a/support/rollup/config.js b/support/rollup/config.js new file mode 100644 index 000000000..9b4e94cb1 --- /dev/null +++ b/support/rollup/config.js @@ -0,0 +1,26 @@ +import factory from './factory' +import slate from '../../packages/slate/package.json' +import slateBase64Serializer from '../../packages/slate-base64-serializer/package.json' +import slateDevLogger from '../../packages/slate-dev-logger/package.json' +import slateHtmlSerializer from '../../packages/slate-html-serializer/package.json' +import slateHyperscript from '../../packages/slate-hyperscript/package.json' +import slatePlainSerializer from '../../packages/slate-plain-serializer/package.json' +import slatePropTypes from '../../packages/slate-prop-types/package.json' +import slateReact from '../../packages/slate-react/package.json' +import slateSchemaViolations from '../../packages/slate-schema-violations/package.json' +import slateSimulator from '../../packages/slate-simulator/package.json' + +const configurations = [ + ...factory(slate), + ...factory(slateBase64Serializer), + ...factory(slateDevLogger), + ...factory(slateHtmlSerializer), + ...factory(slateHyperscript), + ...factory(slatePlainSerializer), + ...factory(slatePropTypes), + ...factory(slateReact), + ...factory(slateSchemaViolations), + ...factory(slateSimulator), +] + +export default configurations diff --git a/support/rollup/packages.js b/support/rollup/factory.js similarity index 100% rename from support/rollup/packages.js rename to support/rollup/factory.js diff --git a/support/webpack.config.js b/support/webpack/config.js similarity index 71% rename from support/webpack.config.js rename to support/webpack/config.js index f6aba7773..788618331 100644 --- a/support/webpack.config.js +++ b/support/webpack/config.js @@ -5,22 +5,24 @@ const HtmlWebpackPlugin = require('html-webpack-plugin') const HtmlWebpackTemplate = require('html-webpack-template') const ExtractTextPlugin = require('extract-text-webpack-plugin') const CopyWebpackPlugin = require('copy-webpack-plugin') -const UglifyJSPlugin = require('uglifyjs-webpack-plugin') + +const NamedModulesPlugin = webpack.NamedModulesPlugin +const HotModuleReplacementPlugin = webpack.HotModuleReplacementPlugin +const IS_PROD = process.env.NODE_ENV === 'production' +const IS_DEV = !IS_PROD const config = { entry: ['react-hot-loader/patch', './examples/index.js'], - output: { - path: path.resolve(__dirname, 'examples/dist'), - filename: '[name].[hash].js', + path: path.resolve(__dirname, '../../build'), + filename: '[name]-[hash].js', }, - + devtool: IS_PROD ? 'source-map' : 'inline-source-map', devServer: { contentBase: './examples', publicPath: '/', hot: true, }, - module: { rules: [ { @@ -49,7 +51,6 @@ const config = { }, ], }, - plugins: [ new ExtractTextPlugin('[name]-[contenthash].css'), new HtmlWebpackPlugin({ @@ -61,22 +62,11 @@ const config = { 'https://fonts.googleapis.com/icon?family=Material+Icons', ], }), - ], -} - -if (process.env.NODE_ENV === 'production') { - config.plugins.push( - new CleanWebpackPlugin(['examples/dist']), - new UglifyJSPlugin({ sourceMap: true }), - new CopyWebpackPlugin(['examples/CNAME']) - ) - config.devtool = 'source-map' -} else { - config.plugins.push( - new webpack.NamedModulesPlugin(), - new webpack.HotModuleReplacementPlugin() - ) - config.devtool = 'inline-source-map' + IS_PROD && new CleanWebpackPlugin([path.resolve(__dirname, '../../build')]), + IS_PROD && new CopyWebpackPlugin(['examples/CNAME']), + IS_DEV && new NamedModulesPlugin(), + IS_DEV && new HotModuleReplacementPlugin(), + ].filter(Boolean), } module.exports = config