diff options
Diffstat (limited to 'vnext/webpack.config.js')
-rw-r--r-- | vnext/webpack.config.js | 215 |
1 files changed, 107 insertions, 108 deletions
diff --git a/vnext/webpack.config.js b/vnext/webpack.config.js index 0adfa67e..20434b44 100644 --- a/vnext/webpack.config.js +++ b/vnext/webpack.config.js @@ -6,119 +6,118 @@ const UglifyJsPlugin = require('uglifyjs-webpack-plugin'); const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin'); const ErrorOverlayPlugin = require('error-overlay-webpack-plugin'); -const dev = process.env.NODE_ENV !== 'production'; - -const config = { - devtool: dev ? 'source-map' : false, - mode: dev ? 'development' : 'production', - entry: { - 'Juick': [ - __dirname + '/src/index.js', - __dirname + '/src/style/main.css' - ] - }, - output: { - filename: dev ? '[name].js' : '[name].[contenthash].bundle.js', - chunkFilename: dev ? '[name].js' : '[name].[contenthash].bundle.js', - publicPath: '/', - path: path.resolve(__dirname, 'dist') - }, - module: { - rules: [ - { - test: /\.css$/, - use: [ - MiniCssExtractPlugin.loader, - { - loader: 'css-loader' - }, - { - loader: 'postcss-loader', options: { - plugins: () => [ - require('autoprefixer')({ - browsers: 'last 4 versions, > 1%, ie >= 8' - }) - ] +module.exports = (env, argv) => { + const dev = argv.mode !== 'production'; + const config = { + devtool: dev ? 'source-map' : false, + mode: dev ? 'development' : 'production', + entry: { + 'Juick': [ + __dirname + '/src/index.js', + __dirname + '/src/style/main.css' + ] + }, + output: { + filename: dev ? '[name].js' : '[name].[contenthash].bundle.js', + chunkFilename: dev ? '[name].js' : '[name].[contenthash].bundle.js', + publicPath: '/', + path: path.resolve(__dirname, 'dist') + }, + module: { + rules: [ + { + test: /\.css$/, + use: [ + MiniCssExtractPlugin.loader, + { + loader: 'css-loader' + }, + { + loader: 'postcss-loader', options: { + plugins: () => [ + require('autoprefixer')({ + browsers: 'last 4 versions, > 1%, ie >= 8' + }) + ] + } } + ] + }, + { + test: /\.html$/, + use: [ + { + loader: 'html-loader', + options: { minimize: false } + } + ] + }, + { + test: /\.js$/, + exclude: /node_modules/, + loader: 'babel-loader' + }, + { + test: /\.(jpe?g|png|gif|svg)$/i, + loaders: [ + 'file-loader?hash=sha512&digest=hex&name=[hash].[ext]' + ] + } + ] + }, + optimization: { + minimizer: [ + new UglifyJsPlugin({ + cache: true, + parallel: true, + sourceMap: dev + }), + new OptimizeCSSAssetsPlugin({}) + ], + splitChunks: { + chunks: 'all', + minSize: 30000, + maxSize: 0, + minChunks: 1, + maxAsyncRequests: 5, + maxInitialRequests: 3, + automaticNameDelimiter: '~', + name: true, + cacheGroups: { + vendors: { + test: /[\\/]node_modules[\\/]/, + priority: -10 + }, + default: { + minChunks: 2, + priority: -20, + reuseExistingChunk: true } - ] - }, - { - test: /\.html$/, - use: [ - { - loader: 'html-loader', - options: { minimize: false } - } - ] - }, - { - test: /\.js$/, - exclude: /node_modules/, - loader: 'babel-loader' - }, - { - test: /\.(jpe?g|png|gif|svg)$/i, - loaders: [ - 'file-loader?hash=sha512&digest=hex&name=[hash].[ext]' - ] + } } - ] - }, - optimization: { - minimizer: [ - new UglifyJsPlugin({ - cache: true, - parallel: true, - sourceMap: dev + }, + plugins: [ + new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/), + new MiniCssExtractPlugin({ + filename: 'Juick.[contenthash].css', + allChunks: true + }), + new HtmlWebPackPlugin({ + template: './src/views/index.html', + filename: './index.html' }), - new OptimizeCSSAssetsPlugin({}) + new ErrorOverlayPlugin() ], - splitChunks: { - chunks: 'all', - minSize: 30000, - maxSize: 0, - minChunks: 1, - maxAsyncRequests: 5, - maxInitialRequests: 3, - automaticNameDelimiter: '~', - name: true, - cacheGroups: { - vendors: { - test: /[\\/]node_modules[\\/]/, - priority: -10 - }, - default: { - minChunks: 2, - priority: -20, - reuseExistingChunk: true - } - } + devServer: { + bonjour: true, + historyApiFallback: true, + hot: true, + inline: true } - }, - plugins: [ - new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/), - new MiniCssExtractPlugin({ - filename: 'Juick.[contenthash].css', - allChunks: true - }), - new HtmlWebPackPlugin({ - template: './src/views/index.html', - filename: './index.html' - }), - new ErrorOverlayPlugin() - ], - devServer: { - bonjour: true, - historyApiFallback: true, - hot: true, - inline: true + }; + + if (dev) { + config.plugins.push(new webpack.HotModuleReplacementPlugin()) } + return config; }; - -if (dev) { - config.plugins.push(new webpack.HotModuleReplacementPlugin()) -} - -module.exports = config; - |