如果你的日常工作是维护一个前端工程,那大概率绕不开 Webpack。但多数人对它的掌握停留在“能跑就行”:配置报错就搜、Loader 顺序记不清、Plugin 只会抄现成的。这门《Webpack源码专精》解决的正是这种“用着但说不清”的状态——它不讲怎么从零配一个 Webpack,而是带你去看它内部到底怎么运转。
它对应的是哪些具体工作场景
课程的内容围绕 Webpack 的处理链路展开:从源码经过 AST 解析、Babel 转译,到依赖图的建立、模块的收集与打包,再到 Loader 和 Plugin 各自的执行时机。这些不是抽象概念,而是你在这些场景里会碰到的:
- 构建产物出问题,需要判断是哪个阶段的处理出错,而不是盲目改配置;
- 团队想统一构建规范,要写一个内部 Loader 或 Plugin 来接管特定文件的处理;
- 打包体积或速度不达标,需要知道优化点落在依赖收集还是 chunk 生成环节;
- 接手一个老项目,配置层层嵌套,需要从原理倒推它为什么这样写。
换句话说,它适合那些已经会用 Webpack、但被“为什么”卡住的人。
学完之后能独立做什么
判断一门源码课值不值得学,标准是能不能落到动手上。按课程的设计,学完你应该能做到这几件事,而不是仅仅“看懂了源码”:
- 写一个可用的自定义 Loader,处理特定类型的文件转换;
- 写一个 Plugin,在编译生命周期里插入自己的逻辑,比如产物校验或资源注入;
- 读懂 Webpack 核心流程的源码结构,遇到问题时能定位到对应模块,而不是只靠搜索;
- 更准确地使用高级配置,清楚每个选项作用在哪个阶段。
这几项都是可验证的:写出来的 Loader 和 Plugin 能不能跑、能不能被同事复用,就是最直接的检验。
资料适合什么基础的人
这门课对基础有明确要求。你需要已经写过 Webpack 配置,理解 entry、output、Loader、Plugin 这些概念在配置里怎么用;同时要有 JavaScript 模块化和 Node 的基本认知,否则读依赖解析那部分会比较吃力。如果只是听说过 Webpack、还没独立配过项目,建议先用它把项目跑起来,再回来看源码,否则容易停在“看懂了但没感觉”的状态。
课程属于源码阅读类,节奏不会快。逐行解析意味着需要跟着动手调试、加断点、打日志,光看不练收获有限。资料里有课程介绍、章节内容和配套说明,先看介绍确认讲的是不是你卡住的那部分,再决定投入时间。
怎么用这份资料效率更高
建议分三步走。第一步,把课程里提到的核心流程对着自己的项目跑一遍,确认每个阶段对应到实际构建的哪个环节;第二步,挑一个你真实现有的需求(比如统一处理某类资源)动手写一遍 Loader 或 Plugin,遇到卡壳再回头查对应章节;第三步,把源码阅读的方法沉淀成自己的排查习惯,比如从报错信息反推是哪个 hook 出的问题。
不必追求一次看完所有源码细节。Webpack 体量大,抓住主流程和几个关键扩展点,比通读整棵源码树更实用。这门课的价值不在于让你背下源码,而在于下次构建出问题时,你知道该往哪里看、该改哪里。
课程目录
课程目录3 条
- 1.AST、Babel、依赖 1-0.pptx 1-0.txt 1-1 babel与AST 1-2 把let变成var 1-3 将代码转化为ES5 1-4 分析index.js的依赖 1-5 递归地分析嵌套依赖 1-6 静态分析循环依赖 课后测试.docx
- 2.Webpack核心原理 2-1 webpack 要解决的两个问题 2-2 编译 import 和 export 关键字 2-3 把多个文件打包成一个 2-4 最终文件长什么样子 2-5 打包器完成 3.Loader原理 3-1 如何加载 CSS 文件 3-2 创建 CSS loader 3-3 发现打包器的问题 3-4 阅读style-loader源码理解 webpack 3-5 raw-loader和css-loader源码赏析 3-6 loader 面试题 4.阅读Webpack源码前的准备 3 第三种调试方式 yarn link 4 其他准备工作 4-1 课程优势 4-2 两种调试 webpack-cli 的方法 5.逐行于都Webpack源码(上) 1 分析 webpack-cli 是如何调用 webpack 的 2 创建编译器 Compiler 的过程 3 Tapable 是什么 4 分析 Webpack 的整体流程 5 Webpack 是如何处理 Entry 的 6 你怎么知道 facotery 就是 nmf 呢? 文章.doc 6.逐行阅读Webpack源码(下) 1 回顾上节课 2 factory.create 与 module 3 _source 与 _ast 4 Webpack 借助 acorn 的 parser 分析 JS 5 如何用目前的知识在面试官面前装X 6 Webpack 分析 JS 的过程 7 Webpack 整体流程复述 8 你可以看懂别人写的博客了 7.Webpack插件原理 1 Webpack Plugin 工作机制 2 插件 1 源码讲解 3 插件 2 源码讲解 4 插件 3 源码讲解 5 loader vs plugin 区别 6 如何自己写 plugin 7 看看网上的相关文章 8.Webpack高级配置举例(1) 1 如何使用课程中的代码 2 让webpack输出的代码支持IE 3 用babel-loader打包JS 4 用babel-loader打包JSX 5 给webpack配置ESLint插件 6 用babel-loader打包TypeScript 7 让ESLint支持TypeScript 8 用babel-loader打包TSX 9 科普:CRLF是什么
- 10 让JS和TS支持@alias
- 11 问答:webpack应学到什么程度
- 12 建议:使用src代替@ 9.Webpack高级配置举例(2) 1 让 webpack 支持 SCSS 2 SCSS 自动 import 全局文件 3 SCSS 分享变量给 JS 4 让 Webpack 支持 LESS 文件 5 LESS 自动引入全局文件 6 LESS 分享变量给 JS 7 对比 SCSS 和 LESS 8 支持 Stylus 文件 9 Webpack config 重构
- 10 在生产环境提取单独的CSS文件
- 11 自动生成HTML页面 10.Webpack高级配置举例(3) 1 Webpack 优化之单独打包 runtime 2 为什么要单独打包 runtime 3 Webpack 优化之用 splitChunks 将 node 依赖单独打包 4 Webpack 优化之固定 moduleIds(不重要) 5 Webpack 多页面 6 Webpack 优化之 common 插件 7 无限多页面的实现思路 Webpack源码.jpg






