webpack系列- 插件开发

125 阅读2分钟

webpack系列- 插件开发

插件开发中最重要的两个资源就是compilercompilation 对象。

  • compiler 对象了完整的 webpack 环境配置 。这个对象在启动 webpack 时被一次性建立,并配置好所有可操作的设置,包括 options, loader 和 plugin。当在webapck 环境中应用一个插件时,插件将受到此compiler 对象的引用。 可以使用它来访问webpack 的朱环境
  • compilation 对象代表了一次资源版本构建。 当运行 webpack 开发环境中间件时,每当检测到一个文件变化,就会创建一个新的 compilation, 从而生成一组新的编译资源。 一个 compilation 对象表现了当前的模块资源,编译生成资源,变化的文件,以及被跟踪依赖的状态信息。 compilation 对象也提供了很多关键时机的回调,以提供自定义处理时选择使用。

这么来理解一下:

  • 我们有一辆汽车类
  • 我们要编写这辆汽车的插件,编写一个带有 apply 方法的函数或者类,方法的参数是汽车类本身,调用这个汽车类本身的 hooks 方法,其中 hooks 中的方法,均是 tapable 的实例,用来处理汽车类的事件流
  • 我们new 一个汽车类,调用自身的 run 方法,run 方法内部调用 hooks 中的方法,就实现了插件的运行,利用插件我们可以做许多事情,例如: 改变汽车的颜色,替换汽车的引擎等。

结合上面,我们可以得知,webpack 正式以这样的方式来实现插件的调用,我们编写的插件,可以在webpack 运行打包的生命周期中,做很多事情,例如:打包后,按照插件的逻辑,生成新的打包产物。

\