1.前言
webpack专辑:
- 如何使用webpack实现模块化打包?
- 如何通过Loader实现特殊资源加载?实例加载css文件
- 开发一个Loader
- 插件机制横向扩展webpack的构建能力 三个插件的使用实例
- 开发一个清除文件注释的插件 (学习插件原理)
通过上面的学习,我们已经对 Webpack 两个最重要的特性:Loader 和插件机制有了深入的了解,今天我们再来解读一下 Webpack 的运行机制和核心工作原理。
2.工作过程简介
Webpack 官网已经很清楚地描述了它的工作原理,如下图所示:
那这里我们先来快速理解一下 Webpack 打包的核心工作过程。我们以一个普通的前端项目为例,项目中一般都会散落着各种各样的代码及资源文件,如下图所示:
比如 JS、CSS、图片、字体等,这些文件在 Webpack 的思想中都属于当前项目中的一个模块。Webpack 可以通过打包,将它们最终聚集到一起。Webpack 在整个打包的过程中:
- 通过 Loader 处理特殊类型资源的加载,例如加载样式、图片;
- 通过 Plugin 实现各种自动化的构建任务,例如自动压缩、自动发布。
具体来看打包的过程,Webpack 启动后,会根据我们的配置,找到项目中的某个指定文件(一般这个文件都会是一个 JS 文件)作为入口。然后顺着入口文件中的代码,根据代码中出现的 import(ES Modules)或者是 require(CommonJS)之类的语句,解析推断出来这个文件所依赖的资源模块,然后再分别去解析每个资源模块的依赖,周而复始,最后形成整个项目中所有用到的文件之间的依赖关系树