aboutsummaryrefslogtreecommitdiff
path: root/assets/webpack.config.js
diff options
context:
space:
mode:
Diffstat (limited to 'assets/webpack.config.js')
-rw-r--r--assets/webpack.config.js41
1 files changed, 41 insertions, 0 deletions
diff --git a/assets/webpack.config.js b/assets/webpack.config.js
new file mode 100644
index 0000000..4569a84
--- /dev/null
+++ b/assets/webpack.config.js
@@ -0,0 +1,41 @@
+const path = require('path');
+const glob = require('glob');
+const MiniCssExtractPlugin = require('mini-css-extract-plugin');
+const TerserPlugin = require('terser-webpack-plugin');
+const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin');
+const CopyWebpackPlugin = require('copy-webpack-plugin');
+
+module.exports = (env, options) => ({
+ optimization: {
+ minimizer: [
+ new TerserPlugin({ cache: true, parallel: true, sourceMap: false }),
+ new OptimizeCSSAssetsPlugin({})
+ ]
+ },
+ entry: {
+ './js/app.js': glob.sync('./vendor/**/*.js').concat(['./js/app.js'])
+ },
+ output: {
+ filename: 'app.js',
+ path: path.resolve(__dirname, '../priv/static/js')
+ },
+ module: {
+ rules: [
+ {
+ test: /\.js$/,
+ exclude: /node_modules/,
+ use: {
+ loader: 'babel-loader'
+ }
+ },
+ {
+ test: /\.css$/,
+ use: [MiniCssExtractPlugin.loader, 'css-loader']
+ }
+ ]
+ },
+ plugins: [
+ new MiniCssExtractPlugin({ filename: '../css/app.css' }),
+ new CopyWebpackPlugin([{ from: 'static/', to: '../' }])
+ ]
+});