引言
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),它们的执行顺序可能很重要。钩子按以下顺序执行:
- NPM 模块,按照
modules
配置 中列出的顺序 - 用户模块,在 [/modules/ 文件夹](/guide/ essentials/project-structure) 中加载,按字母顺序
- 你定义在
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';