123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- 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) => {
- const devMode = options.mode !== 'production';
- return {
- optimization: {
- minimizer: [
- new TerserPlugin({ cache: true, parallel: true, sourceMap: devMode }),
- new OptimizeCSSAssetsPlugin({})
- ]
- },
- entry: {
- 'app': glob.sync('./vendor/**/*.js').concat(['./js/app.js'])
- },
- output: {
- filename: '[name].js',
- path: path.resolve(__dirname, '../priv/static/js'),
- publicPath: '/js/'
- },
- devtool: devMode ? 'source-map' : undefined,
- module: {
- rules: [
- {
- test: /\.js$/,
- exclude: /node_modules/,
- use: {
- loader: 'babel-loader'
- }
- },
- {
- test: /\.[s]?css$/,
- use: [
- MiniCssExtractPlugin.loader,
- 'css-loader',
- 'sass-loader',
- ],
- }
- ]
- },
- plugins: [
- new MiniCssExtractPlugin({ filename: '../css/app.css' }),
- new CopyWebpackPlugin([{ from: 'static/', to: '../' }])
- ]
- }
- };
|