代码压缩
- 插件:
TerserPlugin
- 配置方式:
const TerserPlugin = require('terser-webpack-plugin');
module.exports = {
optimization: {
minimizer: [
new TerserPlugin()
]
}
};
- 在构建流程中的作用:在打包完成后,对生成的JavaScript代码进行压缩,去除冗余代码,减小文件体积,提高加载性能。它在构建流程的较后阶段执行,主要作用于输出的代码。
提取公共代码
- 插件:
SplitChunksPlugin
- 配置方式:
module.exports = {
optimization: {
splitChunks: {
chunks: 'all'
}
}
};
- 在构建流程中的作用:在打包过程中,分析模块间的依赖关系,将多个模块中重复引用的代码提取出来,生成单独的文件。这可以实现代码的复用,减少整体文件体积,提高缓存利用率。它在打包过程中执行,在代码生成阶段之前对模块进行分析和拆分。
生成HTML模板
- 插件:
HtmlWebpackPlugin
- 配置方式:
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
plugins: [
new HtmlWebpackPlugin({
template: './src/index.html' // 源HTML模板文件路径
})
]
};
- 在构建流程中的作用:在打包结束后,根据指定的HTML模板文件,生成一个新的HTML文件,并将打包后的JavaScript和CSS文件自动引入到该HTML文件中。它在构建流程的最后阶段执行,确保HTML文件能正确引用打包后的资源。
执行顺序和相互影响
- 执行顺序:
SplitChunksPlugin
在打包过程中较早执行,分析模块依赖并提取公共代码;TerserPlugin
在打包完成后执行,对JavaScript代码进行压缩;HtmlWebpackPlugin
在构建流程的最后执行,生成最终的HTML文件并引入打包后的资源。
- 相互影响:
SplitChunksPlugin
提取公共代码会影响最终生成的JavaScript文件结构,TerserPlugin
对这些生成的JavaScript文件进行压缩,而HtmlWebpackPlugin
依赖于前两者生成的打包文件来正确生成HTML文件,引入压缩后的和拆分后的代码文件。如果SplitChunksPlugin
提取的公共代码不正确,可能导致TerserPlugin
压缩的代码不是最优的,同时也会影响HtmlWebpackPlugin
生成的HTML文件对资源的引用。