Webpack 打包流程

Webpack 从入口分析到输出产物的核心打包流程。

#tech / dev / frontend / eng #type / concept #status / growing

[!info] related notes

Webpack 打包流程

Webpack 的核心不是“把文件压成一个包”,而是围绕模块依赖图做分析、转换和输出。

一句话定义

Webpack 会从入口出发构建依赖图,经过模块解析、资源转换、代码封装和优化后,最终输出浏览器可用的静态资源。

最稳的理解顺序

  1. 读取配置和入口
  2. 从入口递归分析依赖
  3. 遇到不同类型的模块时交给 Loader 转换
  4. 形成模块依赖图
  5. 在构建阶段由 Plugin 参与扩展和优化
  6. 生成 chunk、bundle 以及最终产物

流程拆开看

入口分析

Webpack 从 entry 指定的模块开始,把它当成整个依赖图的起点。

模块递归解析

当入口文件里继续 import 其他模块时,Webpack 会继续向下分析,直到把依赖关系收集出来。

资源转换

对 CSS、TypeScript、图片等资源,Webpack 会交给对应 Loader 处理。

构建与优化

在模块图形成后,Webpack 会进行 chunk 拆分、运行时代码注入、压缩、抽离等处理,这一阶段 Plugin 会大量参与。

输出产物

最终根据 output 配置生成浏览器可用的 JS、CSS、静态资源和 HTML 辅助产物。

最容易误解的点

  • Webpack 不只是“压缩工具”,它先做的是模块图构建
  • LoaderPlugin 都参与流程,但位置不同
  • 开发环境和生产构建都可能走这套思路,只是优化目标不同

最短记忆方式

Webpack = 入口出发 -> 构建依赖图 -> 转换资源 -> 优化输出。

面试要点

来自 webpack-build-process-interview-question 的面试视角整理。

一句话回答

Webpack 会从入口文件出发递归分析依赖,借助 Loader 转换不同类型的模块,再由 Plugin 扩展构建过程,最后输出可部署的静态资源。

最稳的回答主线

  1. 读取配置和入口
  2. 从入口递归收集依赖
  3. 用 Loader 处理不同资源
  4. 形成模块依赖图
  5. 在构建阶段做拆包、压缩、注入等优化
  6. 输出最终 bundle 或其他静态资源

面试里一句加分点

如果能顺手补一句“Webpack 的核心其实是依赖图构建”,通常就已经比只会说打包压缩更深入。

最短记忆方式

入口 -> 依赖图 -> 转换 -> 优化 -> 输出。

创建于 2026/3/19 更新于 2026/5/27