aboutsummaryrefslogtreecommitdiff
path: root/vnext/webpack.config.js
diff options
context:
space:
mode:
Diffstat (limited to 'vnext/webpack.config.js')
-rw-r--r--vnext/webpack.config.js215
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;
-