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'); 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, { loader: 'css-loader' } ] }, { test: /\.scss$/, use: [MiniCssExtractPlugin.loader, { loader: 'css-loader', }, { loader: 'postcss-loader', options: { plugins: function () { return [ require('precss'), require('autoprefixer'), require('tailwindcss') ]; } } }, { loader: 'sass-loader' }] }, { test: /\.(woff2)$/, loader: 'url-loader' }, ] }, plugins: [ new MiniCssExtractPlugin({ filename: '../css/app.css' }) ] });