Webpack 插件 | 青训营笔记

52 阅读2分钟

这是我参与「第五届青训营」笔记创作活动的第15天。

本笔记对应的是青训营关于Webpack插件部分课程。

1 课程内容概括

本笔记对应的课程部分介绍了Webpack插件。

2 为什么要使用插件的设计方式

流程复杂导致对新人来讲难度大、上手成本高;

功能迭代时,作出修改的成本较高,一处修改很可能影响整体;

作为开源项目,功能比较固定而僵化,缺乏成长性

而插件架构的精髓是对扩展开放、对修改封闭

3 常见Webpack插件

常用的Webpack插件

  • HtmlWebpackPlugin:将打包后的 JS 文件自动插入到 HTML 模板中,并生成一个新的 HTML 文件。
  • MiniCssExtractPlugin:将CSS提取到独立的文件中,以便于浏览器缓存。
  • DefinePlugin:允许在代码中定义全局常量。
  • HotModuleReplacementPlugin:支持热更新,在开发过程中无需手动刷新页面即可实时看到修改效果。
  • UglifyJsPlugin:压缩JavaScript代码,以减少文件大小和加载时间。
  • CleanWebpackPlugin:在每次打包之前清除之前打包生成的文件。
  • CopyWebpackPlugin:将文件从源目录复制到目标目录,例如将静态文件复制到打包后的目录中。
  • BundleAnalyzerPlugin:分析打包后的文件大小和依赖关系。

4 理解插件:钩子

Webpack插件通过挂载到特定的钩子扩展Webpack的功能。Webpack钩子是一个可被 Webpack调用的函数,插件可以在Webpack的构建流程中挂载到相应的钩子上,在执行特定的阶段执行插件自定义的逻辑。

时机:complier.hooks.compilation 参数:compilation等 交互:dependencyFactories.set

5 总结与思考

本笔记对应的课程内容详细介绍了Webpack插件化及钩子。至此,Webpack部分知识总结完毕。在入门时,应该理解打包流程、掌握常用配置项、Loader、插件的使用方法,能够根据需要搭建所需工具的Webpack环境,并能够掌握常见的脚手架用法。

进阶学习需要理解Loader和插件机制,能够自行开发Webpack组件,能够理解常见的性能优化手段。理解前端工程化及其现状。

更深层次则需要阅读源码、理解Webpack编译、打包原理,甚至于能够参与共建。