Skip to content

引言

WXT 包含一个系统,允许你插入选 build 过程并进行更改。

添加钩子

最简单的添加钩子方式是通过 wxt.config.ts。以下是修改 manifest.json 文件的示例钩子,在文件被写入输出目录之前:

typescript
// wxt.config.ts
export default defineConfig({
  hooks: {
    'build:manifestGenerated': (wxt, manifest) => {
      if (wxt.config.mode === 'development') {
        manifest.title += ' (DEV)';
      }
    },
  },
});

大多数钩子会将 wxt 对象作为第一个参数。它包含了构建的已解决配置和其他关于当前构建的信息。其他参数可以通过引用来修改,以改变构建系统的不同部分。

将这些一次性钩子直接添加到你的配置文件中是简单的,但如果发现 yourself 写了很多钩子,你应该将它们提取为 WXT 模块 而不是。

执行顺序

由于钩子可以在多个地方定义,包括 [WXT 模块](/guide/ essentials/wxt-modules),它们的执行顺序可能很重要。钩子按以下顺序执行:

  1. NPM 模块,按照 modules 配置 中列出的顺序
  2. 用户模块,在 [/modules/ 文件夹](/guide/ essentials/project-structure) 中加载,按字母顺序
  3. 你定义在 wxt.config.ts 中的钩子

要查看项目中的执行顺序,运行带有 --debug 标志的 wxt prepare 并搜索 "钩子执行顺序":

⚙钩子执行顺序:
⚙   1. wxt:built-in:unimport
⚙   2. src/modules/auto-icons.ts
⚙   3. src/modules/example.ts
⚙   4. src/modules/i18n.ts
⚙   5. wxt.config.ts > hooks

更改执行顺序很简单:

  • 前缀你的用户模块以一个数字(较低的数字表示先加载):
    html
    📁 modules/
       📄 0.my-module.ts
       📄 1.another-module.ts
  • 如果你需要在用户模块之后运行 NPM 模块,只需将其作为用户模块,并前缀文件名以数字!
    typescript
    // modules/2.i18n.ts
    export { default } from '@wxt-dev/i18n/module';