1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
|
const path = require('path') const MiniCssExtractPlugin = require('mini-css-extract-plugin') const OptimizeCssAssetsWebpackPlugin = require('optimize-css-assets-webpack-plugin') const HtmlWebpackPlugin = require('html-webpack-plugin')
module.exports = { mode: 'production', entry: { index: './src/index.js', search: './src/index2.jsx' }, output: { path: path.join(__dirname, 'dist'), filename: '[name].[chunkhash:8].js' }, module: { rules: [ { test: /\.jsx?$/, use: 'babel-loader' }, { test: /\.css$/, use: [MiniCssExtractPlugin.loader, 'css-loader'] }, { test: /\.less$/, use: [MiniCssExtractPlugin.loader, 'css-loader', 'less-loader'] }, { test: /\.(png|svg|jpg|gif)$/, use: [ { loader: 'file-loader', options: { name: 'img/[name].[hash:8].[ext]' } } ] } ] }, plugins: [ new MiniCssExtractPlugin({ filename: '[name].[contenthash:8].css' }), new HtmlWebpackPlugin({ template: path.join(__dirname, './src/index.html'), filename: 'index.html', chunks: ['index'], inject: true, minify: { html5: true, minifyCSS: true, minifyJS: true, removeComments: true, collapseWhitespace: true, preserveLineBreaks: false, } }), new HtmlWebpackPlugin({ template: path.join(__dirname, './src/search.html'), filename: 'search.html', chunks: ['search'], inject: true, minify: { html5: true, minifyCSS: true, minifyJS: true, removeComments: true, collapseWhitespace: true, preserveLineBreaks: false, } }), new OptimizeCssAssetsWebpackPlugin({ assetNameRegExp: /\.css$/g, cssProcessor: require('cssnano') }) ] }
|