Skip to content

defines 参数

该参数用于在 Vite 编译时进行文本替换,本质上就是 Vite 的 define 配置项,但不同的是,它会同时作用于 injectstransformers 这两个配置。具体请看 作用范围

如何使用

该参数的类型是 Record<string, string>,用法如下

typescript
ViteWebExtKits({
  extensionId: extId,
  defines: {
    foo: "bar",
  },
});
ViteWebExtKits({
  extensionId: extId,
  defines: {
    foo: "bar",
  },
});

我们传递以下这个对象

json
{
  "foo": "bar"
}
{
  "foo": "bar"
}

这意味着代码中所有的 foo 变量或字符串都会被替换为字符串 "bar"

例子 1

比如我们在 index.entry.tsx 中编写以下代码

tsx
function App() {
  return <div>foo</div>;
}
function App() {
  return <div>foo</div>;
}

在编译后会变成

tsx
function App() {
  return <div>bar</div>;
}
function App() {
  return <div>bar</div>;
}

例子 2

比如我们在 options 页面中打印

typescript
console.log(foo);
console.log(foo);

编译后会变成

typescript
console.log("bar");
console.log("bar");

注意

如果打印的是 console.log(window.foo) 是不会被转换的

作用范围

  • injectScripts
  • contentScripts
  • background
  • options
  • popup
  • transformers
  • externals

Powered by Vitepress