浏览器扩展 活跃维护

extension.js

extension-js/extension.js

跨浏览器扩展框架。

5206
Stars 标星
144
Forks 分支
15
Watchers 关注
6
Open Issues
TypeScript
主要语言
MIT
开源协议
43.2 MB
仓库大小
1 天前
最后推送
一键安装扩展 / 插件指令
dsh plugin --profile web add github:extension-js/extension.js
git clone https://github.com/extension-js/extension.js.git
git clone git@github.com:extension-js/extension.js.git
README.md main

英文原文正文为项目原始 README(英文),本站后续会翻译为中文,当前仅剔除图片与无关章节并统一排版。

Extension.js [][npm-版本-网址] [][npm-下载-网址] [][操作-网址] [][discord-网址] [][最佳实践-网址]

跨浏览器扩展框架。为 Chrome、Edge、Firefox 和 Safari 构建,无需构建配置。

npx extension@latest create my-extension
cd my-extension
npm run dev

可与 npm、pnpm、yarn、bun 和 deno 一起使用。

CLI 本身可在 Node.js 22.12、Deno 2.5 和 Bun 1.2 上运行。

文档 · 示例 · YouTube · 展示 · 博客

为什么选择 Extension.js

浏览器扩展在现代网页开发中提供了最差的开发体验。Manifest V3 碎片化、浏览器特定的怪癖、内容脚本无法热重载,以及每个目标需要单独的构建流程。Extension.js 解决了这些问题。

  • 热模块替换 支持 popup、options、devtools 及其他扩展页面,包括 React、Vue、Svelte 和 Preact 组件,对内容脚本和服务工作者进行有针对性的重载,因此一次保存不会重载整个扩展。
  • 默认使用 Manifest V3,为 Chrome、Edge、Firefox 和 Safari 目标提供自动适配器。
  • 一条 CLI 可适用于 Chrome、Edge、Firefox 以及任何 Chromium 或 Gecko 二进制。
  • 零配置,无需 webpack、rollup 或维护任何插件。
  • 一流的 TypeScript、React、Vue、Svelte 和 Preact 支持。
  • 生产构建 可用 extension build --zip,为 Chrome 网上应用店和 Firefox 附加组件准备就绪。
  • 即插即用,通过一个 devDependency 即可支持现有扩展。

观看它的工作

这有什么不同

如果你使用过 Plasmo、WXT 或 CRXJS,这里是 Extension.js 所做的,而其他工具没有做到的:

功能 Extension.js
直接运行任何 GitHub 示例 extension dev https://github.com/.../sample
管理浏览器二进制文件 extension install firefox 下载独立构建
跨浏览器的定向内容脚本重载 内置功能,仅重新注入更改的条目,无插件粘合
应用商店用生产压缩包 extension build --zip
框架无关 Vanilla、TS、React、Vue、Svelte、Preact,无锁定
自定义 Chromium 和 Gecko 二进制文件 --chromium-binary、--gecko-binary

框架

ESNext
试用
TypeScript
试用
WASM
试用
React
试用
Vue
试用
Svelte
试用
Preact
试用

浏览器

在使用 extension dev、extension start 或 extension preview 时使用这些标志:

  • 选择浏览器:--browser <chrome | edge | firefox | safari>
  • 自定义 Chromium 二进制文件:--chromium-binary <path-to-binary>
  • 自定义 Gecko(Firefox)二进制文件:--gecko-binary <path-to-binary>
# Chrome (system default)
npx extension@latest dev --browser=chrome

# Edge
npx extension@latest dev --browser=edge

# Custom Chrome/Chromium path
npx extension@latest dev --chromium-binary "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"

# Custom Firefox path
npx extension@latest dev --gecko-binary "/Applications/Firefox.app/Contents/MacOS/firefox"
谷歌浏览器
✅ 支持
微软 Edge
✅ 支持
火狐浏览器
✅ 支持
苹果 Safari
✅ 支持
基于 Chromium
✅ 支持
基于 Gecko
✅ 支持

发布到商店

构建一个可用于生产的包并将其压缩,以便提交到 Chrome 网上应用店、Edge 附加组件或 Firefox AMO:

# Production build
npx extension@latest build

# Production build packaged as a ZIP
npx extension@latest build --zip

# Per-browser builds
npx extension@latest build --browser=firefox --zip

有用的标志:

  • --zip 将构建打包为可上传到商店的 ZIP 文件
  • --zip-source 包含用于商店源码审核的源文件
  • --zip-filename <name> 控制输出文件名,写为 dist/<name>-<browser>.zip
  • --out-dir <path> 将构建写入 <path>/<browser> 而不是 dist/<browser>。拒绝将构建输出到直播开发会话提供的文件夹,因此这是构建与开发会话并行运行的方法
  • --polyfill 启用跨浏览器 webextension 填充

管理浏览器二进制文件

跳过系统安装步骤。Extension.js 可以下载并管理隔离的浏览器二进制文件,以进行干净的开发会话:

# Install a managed Firefox build
npx extension@latest install firefox

# Install Chrome and Edge in one go
npx extension@latest install --browser=all

# Print where managed browsers live
npx extension@latest install --where

添加到现有扩展

将 Extension.js 安装为开发依赖并连接你的脚本。

npm install extension@latest --save-dev
{
  "scripts": {
    "build": "extension build",
    "dev": "extension dev",
    "preview": "extension preview"
  }
}

运行 npm run dev 进行开发,并查看浏览器自动打开且已加载你的扩展:

使用 npm run build 用于生产环境,使用 npm run preview 检查生产输出。

从 Chrome 示例开始

从 Chrome Extension Samples 拉取任何示例并直接运行:

npx extension@latest dev https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/functional-samples/sample.page-redder --browser=edge

包管理器

将 Extension.js 添加到项目中,或者在不安装的情况下使用你已经使用的包管理器运行一次。

包管理器 添加到项目 不安装运行
npm npm install extension@latest --save-dev npx extension@latest create my-extension
pnpm pnpm add extension@latest --save-dev pnpm dlx extension@latest create my-extension
Yarn yarn add extension@latest --dev yarn dlx extension@latest create my-extension
Bun bun add --dev extension@latest bunx extension@latest create my-extension
Deno deno add npm:extension@latest deno run -A npm:extension@latest create my-extension

CLI 所使用的运行时是另一个问题,下面将进行解答。

运行时

运行时间 状态 备注
Node.js ✅   22.12   和   更新 默认。npx、pnpm dlx、yarn dlx 和 bunx 都通过发布的二进制文件落在这里
Deno ✅   2.5   和   更新的 deno run -A npm:extension@latest。Deno 2.8.0 被拒绝,因为它无法加载 node:querystring,在 2.8.1 中已修复
Bun ✅   1.2   和   更新 bunx --bun extension 和 bun run --bun。普通的 bunx 则在 Node.js 上运行 CLI,通过已发布的 bin

社区

  • 如果 Extension.js 帮助你更快完成项目,请给仓库加星
  • 加入 Discord 获取帮助和反馈
  • 在 GitHub 提交问题和功能请求
  • 浏览生产就绪的 示例

贡献

欢迎提交错误报告和拉取请求。请阅读 docs/CONTRIBUTING.md 了解开发环境设置、测试命令以及拉取请求需要包含的内容。

许可证

MIT (c) Cezar Augusto and Extension.js 作者。

本站来源与版权声明
  • 本文标题:extension.js - 跨浏览器扩展框架
  • 本文链接:https://www.cn121.com/browser/extension-js-extension-js.html
  • 原项目:extension-js/extension.js 版权归原作者 extension-js 及贡献者所有
  • 收录信息:本站于 2026-11-06 收录本项目,本页所列协议与仓库指标均为收录当时的状态;该日期之后原项目的版本更新与协议变更,本页不作同步。
  • 开源协议:收录时本项目采用 MIT(查看 LICENSE 原文),本站转载其原始文档(未改动文字,仅剔除图片与无关章节);使用、修改、分发请以该仓库 LICENSE 原文为准。
  • 站点出处:本文首发于 OneTwoOne,收录自 GitHub 开源项目 extension-js/extension.js。
  • 内容说明:本页正文为原项目 README 原文(英文),本站后续会翻译为中文(当前尚未译出,仅将二级标题译为中文,便于按栏目定位;标题原文可在下方原仓库中查看),仅剔除了图片与赞助等无关章节、并把相对链接改为绝对地址;页首简介为机器翻译自仓库描述。
  • 引用声明:商业转载、第三方聚合或 AI 检索训练引用时,请务必保留以上来源出处、本文永久链接,以及原项目的版权声明与许可信息。
  • 下架通道:若原项目此后变更或收紧了许可协议、或作者/权利人认为本站的收录方式(译文、排版适配、简介翻译等)超出其授权范围,请通过 xyd3302001@163.com 发送下架通知,并附上项目地址与本页链接。本站核实后将第一时间删除本页内容,或改为不复制原文的目录性收录;署名更正等其他要求可一并提出。