打开招聘需求,构建工具一栏写着「熟悉 Webpack 配置与优化」的岗位仍然占大头,可真正能说清楚「一次 npm run build 背后发生了什么」的人并不多。这门课面向的正是这个缺口:不是教你把配置复制粘贴到项目里跑通,而是把 Webpack 5 的运转逻辑拆开看。

先判断自己缺的是哪一块

Webpack 的学习难点不在 API 数量,而在它的抽象层次。多数人卡住的位置其实很集中:

  • 会改 loader 和 plugin,但说不清一个模块从入口到输出经历了哪几个阶段,遇到 loader 顺序问题只能靠试。
  • 知道 code splitting、Tree-shaking 这些名词,但项目里打包体积降不下来,也不知道从哪里入手定位。
  • HMR 配好了能热更新,可一旦报错就绕过,不理解它和 devServer、模块依赖图之间是什么关系。
  • 写自定义 plugin 时对着 compiler、compilation、tapable 的 hooks 发懵,不知道挂哪个钩子、拿到的参数是什么。

如果你对以上任何一条有共鸣,说明缺的不是「再多记几个配置项」,而是构建流程的完整图景。这门课按场景搭建、性能优化、组件开发、源码原理四段递进,正好对应上面四类问题。

这门课真正要讲清的东西

Webpack 5 的内核规模不小——近 500 个 JS 文件、400 多个类,几万行代码配两万行注释。把这一整套读一遍不现实,也没必要。课程的处理方式是从可验证的行为切入:模块打包、代码分割、按需加载、HMR、Tree-shaking、文件监听、Sourcemap、Module Federation、devServer 这些能力,各自在什么条件下生效,背后依赖哪些机制。

Loader 与 Plugin 的开发部分值得单独说。这两者是最容易「会用不会写」的地方:Loader 本质是对模块源码的转换函数,Plugin 则是借助 Tapable 挂载到构建生命周期的钩子。理解了这两条,你才能判断一个现成的插件在构建流程的哪个时点介入、为什么有时和另一个插件冲突。

性能优化不是孤立的一节,它和源码原理是一体两面。构建速度慢,可能是 loader 的 include/exclude 没收敛、可能是 sourcemap 类型选重了、可能是缓存策略没落地;产物体积大,则要回头看 Tree-shaking 的生效前提、splitChunks 的切分粒度、以及模块是不是被意外全量引入。这些都需要能读懂 stats 输出、能定位到具体模块。

看完应该能回答的问题

  • 一个 entry 从解析、依赖收集、转换到生成 chunk,中间的状态分别由哪些对象持有?
  • 为什么某些写法会让 Tree-shaking 失效?sideEffects 字段到底影响了哪一步?
  • HMR 更新时,是哪些模块被替换、哪些状态被保留?为什么有时候热更新会退化成整页刷新?
  • 要写一个「打包结束后把产物清单写入文件」或「把某个依赖替换成 CDN 地址」的插件,你会挂哪几个钩子?
  • 面对一个构建耗时 60 秒的项目,你会按什么顺序排查,每一层预期能拿回多少时间?

怎么用这份资料

建议不要顺着从头看到尾就完事。先挑自己项目里最痛的一个问题——构建慢、包太大、还是不敢改配置——带着它去看对应章节,边看边在真实项目上验证。原理部分可以放在后面,等你对现象有了手感,再回去看源码级的实现会顺畅得多。练习的重点不是敲一遍示例,而是每学完一块,能对着自己的 webpack 配置说出「这一行做了什么、去掉会怎样」。说不出来的地方,就是你还没补上的缺口。

Webpack5 核心原理与应用实践

课程详情

课程详情

本课程由浅入深,全面解析Webpack 5.0的核心原理与应用实践。课程内容涵盖从场景化工程搭建技巧,到构建与应用性能优化技巧,再到Loader、Plugin组件开发,最终落地到源码级剖析Webpack执行原理。

Webpack在现代Web应用开发中占据重要地位,尽管近年来新型构建工具如Vite、Rollup等出现,Webpack依然拥有高达89%的使用率,是前端工程化工具中的佼佼者。

Webpack 5.0功能集庞大,包括模块打包、代码分割、按需加载、HMR、Tree-shaking、文件监听、Sourcemap、Module Federation、devServer等。然而,Webpack的生态复杂度也相应提高,学习难度较大。

  • Webpack包含接近500份JS文件,400+种Class;
  • 7.4万行代码,2万行注释;
  • 160+个内置插件,200+个hook;
  • 数千种社区组件。

本课程旨在帮助学员掌握Webpack的核心原理和应用技巧,包括:

  • 基本用法:以更结构化方式介绍Webpack及常用组件的用法,并结合具体应用场景讲解各自特有的构建需求与相关实现;
  • 性能优化:讲解如何衡量Webpack构建性能,介绍各项常见的构建、产物性能优化手段及其背后的实现原理;
  • 自定义组件:讲解Webpack Loader、Plugin的作用与基本形态,以及具体的开发技巧与辅助工具;
  • 核心原理:讲解Webpack 5.0的核心原理,包括构建过程、Chunk分包规则、Loader/Plugin与Webpack核心架构、模块转译与打包原理、Tree-Shaking原理等。

提示:虽然Webpack 5.0更新力度很大,但多数功能、实现原理均可套用到Webpack 4.0上,课程内容具有普适性。

通过本课程的学习,学员将构建起更成熟、体系化的Webpack知识结构,提升前端工程化能力。

课程目录

重新认识 Webpack:旧时代的破局者
如何理解 Webpack 配置底层结构逻辑?
如何借助 Babel+TS+ESLint 构建现代 JS 工程环境?
如何借助预处理器、PostCSS 等构建现代 CSS 工程环境?
如何搭建 Vue 全栈开发环境?
如何搭建 React 全栈开发环境?
使用 Webpack 构建 NPM Library 的正确方式
使用 Webpack 构建微前端应用
如何借助 Webpack 开发 PWA、Node、Electron 应用?
深入理解图像加载原理与最佳实践
深入理解 Webpack 核心配置结构
构建性能:分享 7 款常用的性能分析工具
如何使用 Webpack 持久化缓存大幅提升构建性能?
Webpack 都有哪些实现并行构建的方法?
有哪些值得学习的构建性能极致优化技巧?
如何正确使用 SplitChunks提升应用性能?
不止 Terser:揭秘代码压缩的门门道道
还有哪些值得学习的应用性能极致优化技巧?
Loader 开发基础:从开源项目学到的 Loader 开发技巧
Loader 开发进阶:如何用好 Loader 扩展开发工具?
插件开发基础:实例剖析插件基本形态与架构逻辑
插件开发进阶:如何提升插件健壮性?
插件架构:Hook 体系是如何影响 Webpack 架构的?
Init、Make、Seal:真正读懂 Webpack 核心流程
Dependency Graph:如何管理模块间依赖?
Chunk:三种产物的打包逻辑
Runtime:模块编译打包及运行时逻辑
Tree-shaking:如何删除无用模块导出?
Sourcemap:源码映射原理与应用技巧
HMR:如何动态替换页面代码?