aboutsummaryrefslogtreecommitdiff
path: root/config
diff options
context:
space:
mode:
authorMiquel Sabaté Solà <msabate@suse.com>2018-09-25 19:13:16 +0200
committerMiquel Sabaté Solà <msabate@suse.com>2018-09-25 19:13:16 +0200
commit259e8ab7a3a7e607263ca07e53787d85881bab8a (patch)
treea726ede11d679fe93515cca062692bfc29e7d87f /config
parentf5329b13315fcc501cd6c8630e0158eae4a88f16 (diff)
downloadjo.mssola.com-259e8ab7a3a7e607263ca07e53787d85881bab8a.tar.gz
jo.mssola.com-259e8ab7a3a7e607263ca07e53787d85881bab8a.zip
Re-bumped much of the application
Signed-off-by: Miquel Sabaté Solà <msabate@suse.com>
Diffstat (limited to 'config')
-rw-r--r--config/webpack.js90
1 files changed, 90 insertions, 0 deletions
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à <mikisabate@gmail.com>
+//
+// 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 <https://www.gnu.org/licenses/>.
+//
+// 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;