https://github.com/FrankFang/jprcb00x6ZsV
const path = require('path')const mode = 'production'const ESLintPlugin = require('eslint-webpack-plugin')//自动进行eslint检查插件const MiniCssExtractPlugin = require('mini-css-extract-plugin')//单独提取css插件const HtmlWebpackPlugin = require('html-webpack-plugin')自动生成html插件const cssLoaders = (...loaders) => [mode === 'production' ? MiniCssExtractPlugin.loader : 'style-loader',{loader: 'css-loader',options: {modules: {compileType: 'icss',},},},...loaders]module.exports = {mode,//模式entry: {//入口main: './src/index.js',admin: './src/admin.js'},output: {//出口filename: '[name].[contenthash].js'},plugins: [new ESLintPlugin({extensions: ['.js', '.jsx', '.ts', '.tsx'] // 不加 .jsx 就不会检查 jsx 文件了}),mode === 'production' && new MiniCssExtractPlugin({filename: '[name].[contenthash].css'}),new HtmlWebpackPlugin({filename: 'index.html',chunks: ['main']}),new HtmlWebpackPlugin({filename: 'admin.html',chunks: ['admin']})].filter(Boolean),optimization: {//优化moduleIds: 'deterministic',//固定模块idruntimeChunk: 'single',//将与我们源代码无关的代码单独打包,避免如webpack配置修改导致需要//更新整个文件splitChunks: {//将node_module的代码单独打包为vendorcacheGroups: {vendor: {priority: 10,minSize: 0, /* 如果不写 0,由于 React 文件尺寸太小,会直接跳过 */test: /[\\/]node_modules[\\/]/,name: 'vendors', // 文件名chunks: 'all', // all 表示同步加载和异步加载,async 表示异步加载,initial 表示同步加载},common: {//将多个js共有代码单独打包为commonpriority: 5,minSize: 0,minChunks: 2,chunks: 'all',name: 'common'}},},},resolve: {alias: {//别名'@': path.resolve(__dirname, './src/')}},module: {rules: [{test: /\.styl(us)?$/i,use: cssLoaders({loader: 'stylus-loader',options: {stylusOptions: {//为每个文件自动引入下面的文件import: [path.resolve(__dirname, 'src/stylus-vars.styl')]}},}),},{test: /\.[jt]sx?$/,exclude: /node_modules/,use: {loader: 'babel-loader',options: {presets: [//规则['@babel/preset-env'],['@babel/preset-react', {runtime: 'classic'}],['@babel/preset-typescript']]}}},{test: /\.s[ac]ss$/i,use: cssLoaders({loader: 'sass-loader',options: {additionalData: `//为每个文件自动引入下面的文件@import "src/scss-vars.scss";`,sassOptions: {includePaths: [__dirname]//到对应路径上找},},},),},]}}
