UNPKG

webpack-config-spaceship

Version:
178 lines (123 loc) 2.81 kB
# webpack-config-spaceship > Webpack config to get a project off the ground fast. ## Installation npm install --save-dev webpack-config-spaceship ## Setup ```js // webpack.config.js const spaceship = require('webpack-config-spaceship'); module.exports = spaceship({ cwd: __dirname, // recommended entry: { main: './src/main/client/index.js', }, output: { path: './dist', publicPath: '/assets', }, }); ``` ## Options #### cwd Path to project root. ```js { cwd: __dirname, // recommended } ``` #### context **Relative** path to source directory. Affects entry paths. Relative to `options.cwd`. #### entry Webpack entry. ```js { main: './main/client/index.jsx' } ``` https://webpack.js.org/configuration/entry-context/#entry #### output.path **Relative** path to output directory. ```js { output: { path: './build', // default }, } ``` #### output.publicPath https://webpack.js.org/guides/public-path #### merge Webpack config to be `lodash.merge`d with the config generated by spaceship. ```js const config = spaceship({ merge: { devServer: { hot: true, }, // etc }, }); ``` #### vendor Boolean whether to automatically create a vendor chunk with `babel-polyfill` and `whatwg-fetch`. Turn this off for libraries. #### common Boolean whether to automatically create a common chunk. Turn this off for libraries. #### filterPlugin(plugin, i) A function to filter out plugins generated by spaceship. ```js const config = spaceship({ filterPlugin(plugin, i) { if (Math.random() > 0.5) { return false; } return true; }, }); ``` #### mapPlugin(plugin, i) A function to replace some plugins with different ones. ```js const config = spaceship({ mapRule(rule, i) { if (i === 0) { return new webpack.optimize.OccurrenceOrderPlugin(); } return rule; }, }); ``` #### filterRule(rule, i) Same as `filterPlugin`, but for rules. #### mapRule(rule, i) Same as `mapPlugin`, but for rules. #### statsPath Path to save webpack stats. ```js { statsPath: 'src/webpack.stats.json', // default } ``` #### manifestPath Path to save manifest file (list of files by entry and type). ```js { manifestPath: 'src/webpack.manifest.json', // default } ``` #### stylesheets Disable ExtractTextPlugin. ## Hot Module Reloading Spaceship automatically configures: - `HotModuleReplacementPlugin` - `NamedModulesPlugin` - `react-hot-loader/babel` - `devServer` config option What you'll need to configure: - entry loaders - `react-hot-loader/patch` - `webpack-dev-server/client?http://localhost:8080`, - `webpack/hot/only-dev-server` - `<AppContainer />` https://webpack.js.org/guides/hmr-react/ ## License Copyright (c) 2017 Marius Craciunoiu. Licensed under the MIT license.