1. Webpack配置
配置DllPlugin
- 安装依赖:
npm install webpack - -save-dev
,如果还没安装的话。
- 创建Dll相关配置文件:例如
webpack.dll.js
const path = require('path');
const webpack = require('webpack');
module.exports = {
entry: {
// 这里列出需要预编译的第三方库,如react、react - dom等
vendor: ['react', 'react - dom']
},
output: {
path: path.join(__dirname, 'dll'),
filename: '[name].dll.js',
library: '[name]_[hash]'
},
plugins: [
new webpack.DllPlugin({
path: path.join(__dirname, 'dll', '[name].manifest.json'),
name: '[name]_[hash]'
})
]
};
- 在主Webpack配置文件(如
webpack.config.js
)中引入Dll相关配置
const webpack = require('webpack');
const AddAssetHtmlPlugin = require('add - asset - html - webpack - plugin');
module.exports = {
//...其他配置
plugins: [
new webpack.DllReferencePlugin({
context: __dirname,
manifest: require('./dll/vendor.manifest.json')
}),
new AddAssetHtmlPlugin({
filepath: require.resolve('./dll/vendor.dll.js'),
outputPath: 'dll',
publicPath: '/dll'
})
]
};
配置OptimizeCSSAssetsPlugin
- 安装依赖:
npm install optimize - css - assets - plugin - -save-dev
- 在主Webpack配置文件(
webpack.config.js
)中添加配置
const OptimizeCSSAssetsPlugin = require('optimize - css - assets - plugin');
module.exports = {
//...其他配置
module: {
rules: [
{
test: /\.css$/,
use: [
'style - loader',
'css - loader'
]
}
]
},
optimization: {
minimizer: [
new OptimizeCSSAssetsPlugin({})
]
}
};
2. 对构建性能和产出文件大小的影响
构建性能
- DllPlugin:预编译第三方库,在后续构建中,Webpack无需重复编译这些库,大大缩短了构建时间。因为第三方库通常比较稳定,不会频繁变动,这样可以显著提高构建速度,尤其是在大型项目中,构建时间的提升非常明显。
- OptimizeCSSAssetsPlugin:在构建过程中对CSS进行优化压缩,虽然这会额外消耗一些CPU时间,但优化后的CSS文件在传输和加载时更快,总体上提升了项目加载性能,尤其是对于包含大量CSS的项目。同时,它与DllPlugin并不冲突,DllPlugin主要针对JavaScript库,而OptimizeCSSAssetsPlugin针对CSS,各自优化不同类型的资源,协同工作提升整体构建性能。
产出文件大小
- DllPlugin:将第三方库分离出来单独打包,使得主包体积减小,因为主包中不再包含这些第三方库的代码。这有利于项目的初次加载,浏览器只需加载更小的主包,后续通过动态加载DLL文件来获取第三方库。
- OptimizeCSSAssetsPlugin:通过压缩CSS代码,去除冗余的空格、注释等,显著减小了CSS文件的大小,进一步优化了项目整体的文件体积,减少了用户下载和加载的时间。