vite-plugin-browserext-hmr
Version:
基于 Vite 构建的浏览器扩展开发环境,提供热更新功能,让扩展开发更加高效。
97 lines (94 loc) • 4.13 kB
TypeScript
import { EventEmitter } from 'node:events';
import { Plugin } from 'vite';
import { PlatformPath } from 'node:path';
declare global {
var __buildInProgress: boolean;
var __buildCompleted: boolean;
var __server: any;
var __inlineScriptContents: any;
var __virtualInlineScript: string;
var __eventEmitter: EventEmitter;
var __runner: any;
var __runnerNum: number;
var __manifestVersion: number;
var __finalManifests: any;
var __config: any;
var __jsCatch: Map<string, string>;
var __builder: any;
var __content_scripts_css: any;
var __dependenciesMap: Map<string, any>;
var __changeFuncArray: (() => Promise<any>)[];
var __changeFuncArrayStatus: boolean;
var __changeStartFunc: () => void;
var __buildFuncArray: (() => Promise<any>)[];
var __buildStateFunc: () => void;
var __errorState: any;
}
type resolveType = PlatformPath["resolve"] extends (...args: any[]) => infer R ? R : string;
interface BuildCrxNotifierPluginOptions {
htmlPaths?: {
name: string;
path: resolveType;
}[];
jsPaths?: {
name: string;
path: resolveType;
}[];
manifestPath: resolveType;
manifestData?: Record<string, any>;
copyPaths?: {
src: resolveType;
dest: resolveType;
}[];
wxtUserConfig?: {
browser?: string;
binaries?: {
firefox?: string;
chromium?: string;
edge?: string;
};
chromiumProfile?: string;
chromiumPref?: string;
chromiumArgs?: string[];
firefoxProfile?: string;
firefoxPrefs?: string;
firefoxArgs?: string[];
openConsole?: boolean;
openDevtools?: boolean;
startUrls?: string[];
keepProfileChanges?: boolean;
outDir?: string;
};
}
/**
* 启动本地开发环境工具浏览器插件热更新,主动重新加载插件实现更新
* 用于配置开发模式下的端口、文件监听路径及延迟行为
*
* @param param0
* @param options.htmlPaths - 需要监听/处理的 HTML 文件路径数组(默认:空数组),用于插入接收热更新更新消息并重新加载插件
* @param options.jsPaths - 需要监听/处理的 JS 文件路径数组(默认:空数组),用于插入接收热更新更新消息并重新加载插件
* @param options.manifestPath - 需要监听/处理的 manifest.json 文件路径(默认:空字符串),用于插入接收热更新更新消息并重新加载插件
* @param options.copyPaths - 需要拷贝的文件路径
* @param options.manifestData - 需要写入到manifest.json的数据(默认:空对象)
* @param options.wxtUserConfig - 浏览器配置
* @param options.wxtUserConfig.browser - 浏览器类型
* @param options.wxtUserConfig.binaries - 浏览器二进制文件
* @param options.wxtUserConfig.binaries.chrome - Chrome浏览器二进制文件
* @param options.wxtUserConfig.binaries.firefox - Firefox浏览器二进制文件
* @param options.wxtUserConfig.binaries.edge - Edge浏览器二进制文件
* @param options.wxtUserConfig.chromiumProfile - 浏览器配置文件
* @param options.wxtUserConfig.chromiumPref - 浏览器偏好设置
* @param options.wxtUserConfig.chromiumArgs - 浏览器参数
* @param options.wxtUserConfig.firefoxProfile - 火狐浏览器配置文件
* @param options.wxtUserConfig.firefoxPrefs - 火狐浏览器偏好设置
* @param options.wxtUserConfig.firefoxArgs - 火狐浏览器参数
* @param options.wxtUserConfig.openConsole - 是否打开浏览器控制台
* @param options.wxtUserConfig.openDevtools - 是否打开浏览器开发者工具
* @param options.wxtUserConfig.startUrls - 启动URL
* @param options.wxtUserConfig.keepProfileChanges - 是否保持浏览器配置
* @param options.wxtUserConfig.outDir - 输出目录
* @returns
*/
declare function vitePluginBrowserextHmr({ htmlPaths, jsPaths, manifestPath, manifestData, // 需要写入到manifest.json的数据
copyPaths, wxtUserConfig, }: BuildCrxNotifierPluginOptions): Plugin;
export { vitePluginBrowserextHmr };