Merge pull request #26 from lukeed/webpack-split

Add Commons Chunk
This commit is contained in:
Rich Harris
2018-01-05 13:48:28 -05:00
committed by GitHub

View File

@@ -1,8 +1,10 @@
const config = require('sapper/webpack/config.js');
const webpack = require('webpack'); const webpack = require('webpack');
const ExtractTextPlugin = require("extract-text-webpack-plugin"); const config = require('sapper/webpack/config.js');
const ExtractTextPlugin = require('extract-text-webpack-plugin');
const UglifyJSPlugin = require('uglifyjs-webpack-plugin'); const UglifyJSPlugin = require('uglifyjs-webpack-plugin');
const isDev = config.dev;
module.exports = { module.exports = {
entry: config.client.entry(), entry: config.client.entry(),
output: config.client.output(), output: config.client.output(),
@@ -18,33 +20,41 @@ module.exports = {
loader: 'svelte-loader', loader: 'svelte-loader',
options: { options: {
hydratable: true, hydratable: true,
emitCss: !config.dev, emitCss: !isDev,
cascade: false, cascade: false,
store: true store: true
} }
} }
}, },
config.dev && { isDev && {
test: /\.css$/, test: /\.css$/,
use: [ use: [
{ loader: "style-loader" }, { loader: 'style-loader' },
{ loader: "css-loader" } { loader: 'css-loader' }
] ]
}, },
!config.dev && { !isDev && {
test: /\.css$/, test: /\.css$/,
use: ExtractTextPlugin.extract({ use: ExtractTextPlugin.extract({
fallback: 'style-loader', fallback: 'style-loader',
use: [{ loader: 'css-loader', options: { sourceMap: config.dev } }] use: [{ loader: 'css-loader', options: { sourceMap:isDev } }]
}) })
} }
].filter(Boolean) ].filter(Boolean)
}, },
plugins: [ plugins: [
config.dev && new webpack.HotModuleReplacementPlugin(), new webpack.optimize.CommonsChunkPlugin({
!config.dev && new ExtractTextPlugin('main.css'), minChunks: 2,
!config.dev && new webpack.optimize.ModuleConcatenationPlugin(), async: false,
!config.dev && new UglifyJSPlugin() children: true
].filter(Boolean), })
devtool: config.dev ? 'inline-source-map' : false ].concat(isDev ? [
}; new webpack.HotModuleReplacementPlugin()
] : [
new ExtractTextPlugin('main.css'),
new webpack.optimize.ModuleConcatenationPlugin(),
new webpack.optimize.AggressiveSplittingPlugin(),
new UglifyJSPlugin()
]).filter(Boolean),
devtool: isDev && 'inline-source-map'
};