aboutsummaryrefslogtreecommitdiff
path: root/juick-server/webpack.config.js
diff options
context:
space:
mode:
Diffstat (limited to 'juick-server/webpack.config.js')
-rw-r--r--juick-server/webpack.config.js114
1 files changed, 64 insertions, 50 deletions
diff --git a/juick-server/webpack.config.js b/juick-server/webpack.config.js
index 6605a1ca..416bf2b3 100644
--- a/juick-server/webpack.config.js
+++ b/juick-server/webpack.config.js
@@ -1,53 +1,67 @@
-const webpack = require("webpack")
-const MiniCssExtractPlugin = require("mini-css-extract-plugin")
-const StyleLintPlugin = require('stylelint-webpack-plugin')
+const webpack = require('webpack');
+const MiniCssExtractPlugin = require('mini-css-extract-plugin');
+const StyleLintPlugin = require('stylelint-webpack-plugin');
+const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
+const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin');
-module.exports = {
- devtool: 'source-map',
- entry: {
- "scripts": [
- __dirname + "/src/main/assets/scripts.js",
- require.resolve('evil-icons/assets/evil-icons.js')
- ],
- "style": [
- __dirname + "/src/main/assets/style.css",
- require.resolve('evil-icons/assets/evil-icons.css'),
- require.resolve('awesomplete/awesomplete.css')
- ]
- },
- output: {
- path: __dirname + "/src/main/resources/static",
- filename: "[name].js"
- },
- module: {
- rules: [
- { test: /\.jsx?$/, loader: 'eslint-loader', enforce: 'pre', exclude: /node_modules/, options: { failOnWarning: false, failOnError: true, fix: true } },
- { test: /\.js$/, loader: 'babel-loader' },
- {
- 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';
+ return {
+ devtool: dev ? 'source-map' : false,
+ entry: {
+ 'scripts': [
+ __dirname + '/src/main/assets/scripts.js',
+ require.resolve('evil-icons/assets/evil-icons.js')
+ ],
+ 'style': [
+ __dirname + '/src/main/assets/style.css',
+ require.resolve('evil-icons/assets/evil-icons.css')
+ ]
+ },
+ output: {
+ path: __dirname + '/src/main/resources/static',
+ filename: '[name].js'
+ },
+ module: {
+ rules: [
+ { test: /\.jsx?$/, loader: 'eslint-loader', enforce: 'pre', exclude: /node_modules/, options: { failOnWarning: false, failOnError: true, fix: true } },
+ { test: /\.js$/, loader: 'babel-loader' },
+ {
+ test: /\.css$/,
+ use: [
+ MiniCssExtractPlugin.loader,
+ {
+ loader: 'css-loader'
+ },
+ {
+ loader: 'postcss-loader', options: {
+ plugins: () => [
+ require('autoprefixer')({
+ browsers: 'last 4 versions, > 1%, ie >= 11'
+ })
+ ]
+ }
}
- }
- ]
- },
- { test: /\.png$/, loader: "url-loader?limit=10000000000" },
- { test: /\.svg$/, loader: "url-loader?limit=10000000000" }
- ]
- },
- plugins: [
- new StyleLintPlugin({ configFile: '.stylelintrc.json', context: 'src/main/assets', files: ['**/*.css'], emitErrors: false }),
- new MiniCssExtractPlugin({ filename: "style.css", allChunks: true })
- ],
-
+ ]
+ },
+ { test: /\.png$/, loader: 'url-loader?limit=10000000000' },
+ { test: /\.svg$/, loader: 'url-loader?limit=10000000000' }
+ ]
+ },
+ optimization: {
+ minimizer: [
+ new UglifyJsPlugin({
+ cache: true,
+ parallel: true,
+ sourceMap: dev
+ }),
+ new OptimizeCSSAssetsPlugin({})
+ ],
+
+ },
+ plugins: [
+ new StyleLintPlugin({ configFile: '.stylelintrc.json', context: 'src/main/assets', files: ['**/*.css'], emitErrors: false }),
+ new MiniCssExtractPlugin({ filename: 'style.css', allChunks: true })
+ ],
+ }
}