webpack.config.js in trestle-0.9.8 vs webpack.config.js in trestle-0.10.0.pre

- old
+ new

@@ -2,19 +2,22 @@ const CopyWebpackPlugin = require('copy-webpack-plugin'); const CssMinimizerPlugin = require('css-minimizer-webpack-plugin'); const MiniCssExtractPlugin = require('mini-css-extract-plugin'); const TerserPlugin = require('terser-webpack-plugin'); +// const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin; module.exports = { mode: 'production', entry: path.resolve(__dirname, 'frontend/index.js'), output: { library: 'Trestle', libraryExport: 'Trestle', - filename: 'bundle.js', - path: path.resolve(__dirname, 'app/assets/bundle/trestle') + filename: 'admin.js', + path: path.resolve(__dirname, 'app/assets/bundle/trestle'), + chunkFilename: '[name]-[contenthash].digested.js', + assetModuleFilename: '[name][ext]' }, optimization: { minimizer: [ new TerserPlugin({ extractComments: false @@ -30,11 +33,11 @@ use: [ { loader: 'babel-loader' } ] }, { - test: /\.(ttf|eot|svg|woff2?)(\?[\s\S]+)?$/, + test: /\.(ttf|woff2?)(\?[\s\S]+)?$/, type: 'asset/resource' }, { test: /\.(png|jpg|gif)$/i, type: 'asset/inline' @@ -52,11 +55,18 @@ ['autoprefixer', {}] ] } } }, - { loader: 'sass-loader' } + { + loader: 'sass-loader', + options: { + sassOptions: { + quietDeps: true + } + } + } ] }, { test: require.resolve('jquery'), use: [{ @@ -70,24 +80,21 @@ }, plugins: [ new CopyWebpackPlugin({ patterns: [ { - from: 'node_modules/@fortawesome/fontawesome-free/webfonts/*', - to: '[name][ext]' - }, - { from: 'node_modules/flatpickr/dist/l10n/*.js', - to: 'flatpickr/[name][ext]', + to: 'locale/flatpickr/[name][ext]', globOptions: { ignore: ['**/index.js'] } } ] }), new MiniCssExtractPlugin({ - filename: 'bundle.css' - }) + filename: 'admin.css' + }), + // new BundleAnalyzerPlugin() ], resolve: { mainFields: ['main'] } };