defines 参数
该参数是用于在 vite 编译时进行文本替换,其实就是 vite 的 define 配置项,但是与之不同的是,它将会同时作用与 injects
, transformers
这俩配置上. 具体请看 作用范围
如何使用
该参数是一个 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