webpack 的作用是将源代码编译 (构建、打包) 成最终代码,整个过程大致分为三个步骤:
- 初始化
- 编译
- 输出
初始化
此阶段 webpack 会将 CLI参数、配置文件、默认配置 进行融合,形成一个最终的配置对象;
- 对配置的处理过程是依托一个第三方库
yargs
完成的;- 此阶段相对比较简单,主要是为接下来的编译阶段做必要的准备;
目前,可以简单的理解为,初始化阶段主要用于产生一个最终的配置;
编译
创建 chunk
-
chunk 是 webpack 在内部构建过程中的一个概念,译为
块
,它表示通过某个入口找到的所有依赖的统称; -
根据入口模块 (默认为 ./src/index.js) 创建一个 chunk
-
每个 chunk 都有至少两个属性:
- name:默认为 main;
- id:唯一编号,开发环境和 name 相同,生产环境是一个数字,从 0 开始;
构建所有依赖模块
-
详细图解
-
简图
产生 chunk assets
-
在第二步完成后,chunk 中会产生一个模块列表,列表中包含了 模块id 和 模块转换后的代码;
-
接下来 webpack 会根据配置为 chunk 生成一个资源列表 即 chunk assets,资源列表可以理解为是生成到最终文件的文件名和文件内容;
-
简图
合并 chunk assets
-
chunk hash 是根据所有 chunk assets 的内容生成的一个 hash 字符串;
-
hash 算法 具体有很多分类,特点是将一个任意长度的字符串转换为一个固定长度的字符串,而且可以保证原始内容不变,产生的 hash 字符串就不变;
输出
此步骤非常简单,webpack 将利用 node 中的 fs 模块(文件处理模块),根据编译产生的总的 assets 生成相应的文件
总过程
Action:异步提交状态
上一篇