Skip to content

transformers

什么是 transformers

transformers 是将指定文件夹(默认为 /src/transformers)下面所有以 .js,.ts 结尾的文件,通过 unbuild 编译后存放到 /dist/transformers 一个配置.

它类似于 webpack 中的 CopyWebpackPlugin 配置,但是与之不同的是,它只能处理 .js,.ts 结尾的文件,并将他们编译压缩后存放到 /dist/transformers

TIP

如果你需要 copy 其他类型的文件,请放到 public 文件夹中

如何配置

如果你需要指定(不建议指定)transformers 文件夹可以像这样配置

typescript
import { defineConfig } from "vite";

export default defineConfig({
  //  ...
  plugins: [
    //    ...
    //    在这里你可以配置所有 webextkit 提供的 vite 插件
    ViteWebExtKits({
      extensionId: extId,
      transformersInputFolderPath: "./src/copy-folder",
    }),
  ],
});
import { defineConfig } from "vite";

export default defineConfig({
  //  ...
  plugins: [
    //    ...
    //    在这里你可以配置所有 webextkit 提供的 vite 插件
    ViteWebExtKits({
      extensionId: extId,
      transformersInputFolderPath: "./src/copy-folder",
    }),
  ],
});

如何使用

你只需要将需要编译的 .js,.ts 文件放入到 transformer 中即可,比如我们放入以下文件

text
📦src
 ┣ 📂transformers
 ┃ ┗ 📜globalJs.ts
📦src
 ┣ 📂transformers
 ┃ ┗ 📜globalJs.ts

内容为

typescript
//  globalJs.ts
console.log("globalJs");
//  globalJs.ts
console.log("globalJs");

经过编译后会输出以下文件夹

text
📦dist
 ┣ 📂transformers
 ┃ ┗ 📜globalJs.js
📦dist
 ┣ 📂transformers
 ┃ ┗ 📜globalJs.js

内容为

js
//  globalJs.js
(function () {
  "use strict";
  console.log("globalJs");
})();
//  globalJs.js
(function () {
  "use strict";
  console.log("globalJs");
})();

如果你想在 background 中引用它只需要这样写

typescript
browser.scripting.registerContentScripts([
  {
    id: `inject-module`,
    js: ["transformers/globalJs.js"],
    matches: ["https://github.com/*"],
    runAt: "document_end",
    world: "MAIN",
  },
]);
browser.scripting.registerContentScripts([
  {
    id: `inject-module`,
    js: ["transformers/globalJs.js"],
    matches: ["https://github.com/*"],
    runAt: "document_end",
    world: "MAIN",
  },
]);

它与 public 文件夹有什么区别?

public 文件夹是 vite 提供的静态资源处理文件夹,你可以将所有类型的文件都放在里面,它们都会被 copy 到 dist 目录,与之不同的是,在 public 文件夹中的 .js,.ts 文件不会被编译,而放在 transformers 中的 .js,.ts 文件会被编译后输出

Powered by Vitepress