ES 模块化
你的源代码始终应编写为 ESM。然而,你可以控制一个入口点是否以 ESM 形式打包。
HTML 页面 ≥0.0.1
Vite 只支持从 HTML 页面打包为 ESM 的 JS。确保你已添加 type="module"
到你的 <script>
标签:
html
<script src="./main.ts"></script>
<script src="./main.ts" type="module"></script>
背景 ≥0.16.0
默认情况下,背景将被打包成一个单独的文件作为 IIFE。你可以通过在背景入口点设置 type: "module"
来更改此行为:
ts
export default defineBackground({
type: 'module',
main() {
// ...
},
});
这将改变输出格式为 ESM,使背景脚本与 HTML 页面之间按代码分隔,并在你的 manifest 中设置 "type": "module"
。
WARNING
只有 MV3 支持 ESM 背景脚本/服务工件。当目标为 MV2 时,type
选项被忽略,背景始终打包成一个单独的文件作为 IIFE。
内容脚本
WXT 目前还没有内置支持按 ESM 柜界内容脚本的功能。计划是添加分块功能以减少打包大小,但不支持 HMR 现在。实现为通用解决方案的 HMR 不可能,因为存在许多技术问题。有关详细信息,请参阅 内容脚本 ESM 支持 #357。
如果你无法等待,并且需要 ESM 支持,你可以手动实现 ESM 支持。请参考 ESM 内容脚本 UI 例子以了解如何操作。