# Plugin 编写

# Plugin 是什么?

插件是webpack 的核心功能。webpack 自身也是构建于你在 webpack 配置中用到的相同的插件系统之上

插件目的在于解决 loader 无法实现的其他事。在webpack执行到某个周期的时候执行一些其他操作

# Plugin 特性

webpack 插件是一个具有 apply 方法的 JavaScript 对象.

apply 方法会被 webpack compiler 调用,并且在整个编译生命周期都可以访问 compiler 对象。

# Plugin的使用方式

由于插件可以携带参数/选项,你必须在 webpack 配置中,向 plugins 属性传入一个 new 实例。

# 写个Plugin

const pluginName = 'ConsoleLogOnBuildWebpackPlugin';

class ConsoleLogOnBuildWebpackPlugin {
  apply(compiler) {
    compiler.hooks.run.tap(pluginName, (compilation) => {
      console.log('webpack 构建过程开始!');
    });
  }
}

module.exports = ConsoleLogOnBuildWebpackPlugin;

1
2
3
4
5
6
7
8
9
10
11
12

# 文档

  1. tapable (opens new window)
  2. compiler 钩子 (opens new window)
  3. Plugin API (opens new window)
  4. plugin (opens new window)