1. 构建速度优化
缓存优化
module.exports = {cache: {type: 'filesystem', buildDependencies: {config: [__filename]}}
};
多线程构建
const threadLoader = require('thread-loader');module.exports = {module: {rules: [{test: /\.js$/,use: ['thread-loader','babel-loader']}]}
};
externals 外部依赖
module.exports = {externals: {'react': 'React','react-dom': 'ReactDOM'}
};
2. 打包体积优化
Tree Shaking
module.exports = {mode: 'production',optimization: {usedExports: true,sideEffects: false }
};
代码分割
module.exports = {optimization: {splitChunks: {chunks: 'all',cacheGroups: {vendor: {test: /[\\/]node_modules[\\/]/,name: 'vendors',chunks: 'all',}}}}
};
动态导入
const module = await import('./heavy-module.js');
const Home = () => import('./Home.vue');
3. 资源优化
压缩优化
const TerserPlugin = require('terser-webpack-plugin');
const CssMinimizerPlugin = require('css-minimizer-webpack-plugin');module.exports = {optimization: {minimizer: [new TerserPlugin({parallel: true,terserOptions: {compress: {drop_console: true }}}),new CssMinimizerPlugin()]}
};
图片优化
module.exports = {module: {rules: [{test: /\.(png|jpe?g|gif|svg)$/i,use: [{loader: 'image-webpack-loader',options: {mozjpeg: { progressive: true },optipng: { enabled: false },pngquant: {quality: [0.65, 0.90],speed: 4}}}]}]}
};
4. 解析优化
别名和扩展
module.exports = {resolve: {alias: {'@': path.resolve(__dirname, 'src'),'components': path.resolve(__dirname, 'src/components')},extensions: ['.js', '.jsx', '.ts', '.tsx', '.json'],modules: [path.resolve(__dirname, 'src'), ...nodeModulesPaths]}
};
精确匹配
module.exports = {module: {rules: [{test: /\.js$/,include: path.resolve(__dirname, 'src'), exclude: /node_modules/,use: 'babel-loader'}]}
};
5. 开发环境优化
模块热替换 (HMR)
module.exports = {devServer: {hot: true,client: {overlay: false}},plugins: [new webpack.HotModuleReplacementPlugin()]
};
Source Map 优化
module.exports = {devtool: process.env.NODE_ENV === 'development' ? 'eval-source-map' : 'source-map'
};
6. 分析和监控
Bundle 分析
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;module.exports = {plugins: [new BundleAnalyzerPlugin({analyzerMode: 'static',openAnalyzer: false})]
};
构建性能分析
module.exports = {stats: {preset: 'minimal',timings: true,errors: true,warnings: true}
};
7. 高级优化策略
预加载和预获取
const Login = () => import('./Login.vue'
);
预构建依赖
module.exports = {experiments: {lazyCompilation: true }
};
DLL 插件(适用于大型项目)
module.exports = {entry: {vendor: ['react', 'react-dom']},plugins: [new webpack.DllPlugin({name: '[name]',path: path.resolve(__dirname, 'dll/[name].manifest.json')})]
};