From 259e8ab7a3a7e607263ca07e53787d85881bab8a Mon Sep 17 00:00:00 2001 From: Miquel Sabaté Solà Date: Tue, 25 Sep 2018 19:13:16 +0200 Subject: Re-bumped much of the application MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Miquel Sabaté Solà --- config/webpack.js | 90 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 config/webpack.js (limited to 'config') diff --git a/config/webpack.js b/config/webpack.js new file mode 100644 index 0000000..103b840 --- /dev/null +++ b/config/webpack.js @@ -0,0 +1,90 @@ +// Copyright (C) 2018 Miquel Sabaté Solà +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . +// +// This file is based on Gitlab's config/webpack.config.js file. + +/* eslint-disable quote-props, comma-dangle, import/no-extraneous-dependencies */ + +const path = require('path'); +const webpack = require('webpack'); +const CompressionPlugin = require('compression-webpack-plugin'); +const StatsPlugin = require('stats-webpack-plugin'); +const UglifyJSPlugin = require('uglifyjs-webpack-plugin'); + +const ROOT_PATH = path.resolve(__dirname, '..'); + +var config = { + mode: 'production', + + context: path.join(ROOT_PATH, 'javascripts'), + entry: { main: './main.js' }, + + output: { + path: path.join(ROOT_PATH, 'javascripts/dist'), + publicPath: '/javascripts/', + filename: '[name].min.js' + }, + + plugins: [ + new webpack.NoEmitOnErrorsPlugin(), + new StatsPlugin('manifest.json', { + chunkModules: false, + source: false, + chunks: false, + modules: false, + assets: true, + }), + new webpack.LoaderOptionsPlugin({ + minimize: true, + debug: false, + }), + new webpack.DefinePlugin({ + 'process.env': { NODE_ENV: JSON.stringify('production') }, + }), + new CompressionPlugin({ + asset: '[path].gz[query]', + }) + ], + + optimization: { + minimizer: [ + new UglifyJSPlugin({ + sourceMap: true, + cache: true, + parallel: true, + uglifyOptions: { + output: { + comments: false + } + } + }) + ] + }, + + resolve: { + extensions: ['.js'], + mainFields: ['jsnext', 'main', 'browser'], + }, + + devtool: 'source-map', + + module: { + rules: [ + { test: /\.js$/, exclude: /node_modules/, loader: "babel-loader" } + ] + } +}; + +module.exports = config; -- cgit v1.2.3