返回

从 webpack4 源码解析之 compiler.run 做了什么

前端

在这个 webpack4 的源码分析系列,我们在上一篇文章中分析了如何配置 webpack4。我们了解到 webpack4 的核心对象是 Compiler,它负责整个打包过程。在上篇文章的末尾,我们提到了 Compiler.run 方法是 webpack 打包的入口。那么今天我们就来看看这个 Compiler.run 方法做了些什么。

1. 准备工作

在调用 Compiler.run 方法之前,我们需要做一些准备工作。首先,我们需要创建一个 Compiler 对象。我们可以通过以下方式创建 Compiler 对象:

const compiler = new Compiler(config);

其中,config 是 webpack 的配置对象。

接下来,我们需要创建一个 Compilation 对象。Compilation 对象是 webpack 打包过程中的一系列操作的集合。我们可以通过以下方式创建 Compilation 对象:

const compilation = new Compilation(compiler);

2. 调用 Compiler.run 方法

在准备工作完成后,就可以调用 Compiler.run 方法了。Compiler.run 方法接收一个回调函数作为参数,这个回调函数将在 webpack 打包完成后执行。

compiler.run((err, stats) => {
  // webpack 打包完成后执行的回调函数
});

3. Compiler.run 方法做了些什么

在调用 Compiler.run 方法后,webpack 将会执行一系列的打包操作。这些操作主要分为两个部分:

3.1 HTML 模板编译

webpack 会首先编译 HTML 模板。HTML 模板是指 webpack 入口文件中引用的 HTML 文件。webpack 会将 HTML 模板中的各种资源(例如 CSS、JS、图片等)进行解析,并将这些资源打包到一起。

3.2 入口文件分析

webpack 会接着分析入口文件。入口文件是指 webpack 入口配置中指定的 JavaScript 文件。webpack 会将入口文件中的代码进行解析,并将代码中的各种依赖(例如模块、函数等)进行分析。

4. 打包完成

在 HTML 模板编译和入口文件分析完成后,webpack 就完成了打包过程。此时,webpack 会执行 Compiler.run 方法中传入的回调函数。

总结

在本文中,我们分析了 webpack4 的 Compiler.run 方法做了些什么。我们了解到 webpack 打包的核心流程包括 HTML 模板编译和入口文件分析。