WXT框架开发浏览器扩展


扩展设置,启用开发者模式,可以查看扩展的背景页,查看代码输出的错误,V3版本已经在Service Worker中了

为和自己使用的浏览器区分,建议使用一个第三方精简版chromium:
https://ungoogled-software.github.io/ungoogled-chromium-binaries/?utm_source=chatgpt.com

边开发边调试,加载未打包的扩展程序,然后进入扩展的详情(右上角)有一个刷新按钮(当代码更新后就点击刷新)

推荐使用vscode扩展:Debugger for Chrome

注意无法连上localhost原因

如果使用了梯子并开启了tun模式,如果没有开启ipv6
需在package.json中:

json
"scripts": {
    "dev": "wxt --host 127.0.0.1 --port 3000", //强制走127.0.0.1 而不是localhost
}

这里启动后,它自己打印的还是localhost,实际已经是127.0.0.1了

安装

文档:https://wxt.dev/guide/installation.html

npx wxt@latest init 安装脚手架
回答几个问题:确认安装吗? 项目名,组件vue,npm
npm install 安装依赖

npm i vue element-plus 安装 element

开发说明

Alt+R修改代码后热重载:浏览器快捷键

npm run dev 调试运行
npm run build 构建

项目结构

bash
{rootDir}/
├─ .output/                # 构建产物输出目录:打包后的扩展文件与最终 manifest.json
├─ .wxt/                   # WXT 生成的工程/TS 配置缓存目录(无需手动修改)
├─ assets/                 # 需经 WXT 处理的静态资源(CSS、图片、字体等)
├─ components/             # 自动按需导入的 UI 组件目录(Vue 组件放这里可直接使用)
├─ composables/            # Vue 组合式函数(可复用逻辑),默认支持自动导入
├─ entrypoints/            # 扩展入口脚本与页面(background/content/popup/options 等在此)
├─ modules/                # 本地 WXT 模块(扩展 WXT 功能的插件片段)
├─ public/                 # 原样复制到输出目录的静态文件(不经过 WXT 处理)
├─ utils/                  # 自动导入的通用工具函数(与 components/composables 类似可全局用)
├─ .env                    # 开发环境变量(本地开发用)
├─ .env.publish            # 发布阶段环境变量(如商店凭据/CI 设置)
├─ app.config.ts           # 运行时配置(可通过 import.meta 访问的应用级配置)
├─ package.json            # 包管理配置与脚本命令入口
├─ tsconfig.json           # TypeScript 编译配置
├─ web-ext.config.ts       # 调试/启动浏览器的 web-ext 配置
└─ wxt.config.ts           # WXT 主配置(入口、权限、构建目标、打包与开发行为)

开发模式调式

项目目录下创建web-ext.config.ts:

ts
import { defineWebExtConfig } from 'wxt';
import { resolve } from 'node:path';

export default defineWebExtConfig({
    binaries: {                                   // 中文注释:为不同目标浏览器指定可执行文件
        chrome: 'C:\\Users\\lee\\AppData\\Local\\Chromium\\Application\\chrome.exe', // 中文注释:指定 Chrome Beta
        // Linux 示例:
        // chrome: '/usr/bin/google-chrome-beta',   // 中文注释:Linux 常见路径(按发行版不同)
        // 还可以设置火狐,edge等浏览器
    },
    chromiumProfile: resolve('chrome-data'), //持久化浏览器数据,需要先手动创建这个文件夹,不然会出错
    keepProfileChanges: true, //保持浏览器数据
    // chromiumArgs: ['--user-data-dir=./.wxt/chrome-data'], // linux持久化浏览器数据
    //   disabled: true, // 禁用打开浏览器,此配置启用,本页其它配置不生效
});

options设置不能整页的bug

构建为原生扩展代码后,删除manifest.json"options_ui": { "page": "options.html" }
即便你设置了它构建后都会覆盖,这可能是一个bug

下载chrome商店扩展

自己拼接URL
https://clients2.google.com/service/update2/crx?response=redirect&prodversion=114.0&acceptformat=crx2,crx3&x=id%3Dfcoeoabgfenejglbffodgkkbkcdhcgfn%26uc