这是一个命令行工具,可帮助构建、运行和测试 WebExtensions。
最终,它的目标是以标准、可移植、跨平台的方式支持浏览器扩展。最初,它将为开发 Firefox 扩展提供简化的体验。
以下是您可以运行的命令。单击每一项以获取详细文档或在命令行上使用--help
,例如web-ext build --help
。
run
lint
sign
build
docs
web-ext
文档首先,确保您正在运行 NodeJS 的当前 LTS(长期支持)版本。
您可以使用以下命令将此命令全局安装到您的计算机上:
npm install --global web-ext
或者,您可以将此命令安装为项目的devDependencies
之一。此方法可以帮助您控制团队使用的web-ext
版本。
npm install --save-dev web-ext
接下来,您可以在项目中将web-ext
命令用作 npm 脚本。下面是一个示例,其中--source-dir
参数指定在哪里查找扩展的源代码。
package.json
"scripts" : {
"start:firefox" : " web-ext run --source-dir ./extension-dist/ " ,
}
您始终可以使用--
后缀将其他命令传递到 npm 脚本。例如,前面的脚本可以在命令行上指定 Firefox 版本:
npm run start:firefox -- --firefox=nightly
社区维护着一个web-ext
公式。
brew install web-ext
你需要:
或者,您可能喜欢:
如果您已经从 npm 安装了web-ext
,您可能需要先卸载它:
npm uninstall --global web-ext
更改为源并安装所有依赖项:
git clone https://github.com/mozilla/web-ext.git
cd web-ext
npm ci
构建命令:
npm run build
将其链接到您的节点安装:
npm link
您现在可以从任何目录运行它:
web-ext --help
要获取更新,只需提取更改并重建可执行文件。您不需要重新链接它。
cd /path/to/web-ext
git pull
npm run build
注意:对此 API 的支持有限。
除了在命令行上使用 web-ext 之外,您可能还希望在 NodeJS 代码中执行web-ext
。
从版本7.0.0
开始, web-ext
npm 包仅导出 NodeJS 原生 ES 模块。如果您使用 CommonJS,则必须使用动态导入。
您无需任何参数验证即可执行命令函数。如果你想执行web-ext run
你可以这样做:
import webExt from 'web-ext' ;
webExt . cmd
. run (
{
// These are command options derived from their CLI conterpart.
// In this example, --source-dir is specified as sourceDir.
firefox : '/path/to/Firefox-executable' ,
sourceDir : '/path/to/your/extension/source/' ,
} ,
{
// These are non CLI related options for each function.
// You need to specify this one so that your NodeJS application
// can continue running after web-ext is finished.
shouldExitProgram : false ,
} ,
)
. then ( ( extensionRunner ) => {
// The command has finished. Each command resolves its
// promise with a different value.
console . log ( extensionRunner ) ;
// You can do a few things like:
// extensionRunner.reloadAllExtensions();
// extensionRunner.exit();
} ) ;
如果您想在 Android 版 Firefox 上运行扩展程序:
import * as adbUtils from "web-ext/util/adb" ;
// Path to adb binary (optional parameter, auto-detected if missing)
const adbBin = "/path/to/adb" ;
// Get an array of device ids (Array<string>)
const deviceIds = await adbUtils . listADBDevices ( adbBin ) ;
const adbDevice = ...
// Get an array of Firefox APKs (Array<string>)
const firefoxAPKs = await adbUtils . listADBFirefoxAPKs (
deviceId , adbBin
) ;
const firefoxApk = ...
webExt . cmd . run ( {
target : 'firefox-android' ,
firefoxApk ,
adbDevice ,
sourceDir : ...
} ) . then ( ( extensionRunner ) => { ... } ) ;
如果您想控制日志记录,可以访问记录器对象。以下是打开详细日志记录的示例:
import * as webExtLogger from 'web-ext/util/logger' ;
webExtLogger . consoleStream . makeVerbose ( ) ;
webExt . cmd . run ( { sourceDir : './src' } , { shouldExitProgram : false } ) ;
您还可以禁用标准输入:
webExt . cmd . run ( { noInput : true } , { shouldExitProgram : false } ) ;
web-ext
是为 WebExtensions 设计的,但您可以尝试禁用清单验证以使用旧扩展。这不受官方支持。
webExt . cmd . run (
{ sourceDir : './src' } ,
{
getValidatedManifest : ( ) => ( {
name : 'some-fake-name' ,
version : '1.0.0' ,
} ) ,
shouldExitProgram : false ,
} ,
) ;
是的! web-ext 工具使您能够构建和发布 Firefox 扩展。该平台在 2016 年 4 月发布的 Firefox 48 中稳定下来。
你好!该工具正在积极开发中。要参与其中,您可以观看存储库、提交问题、创建拉取请求或联系我们提出问题。阅读贡献部分了解如何开发新功能。
这是一个很好的问题,对于每一个新的 web-ext 功能,我们都会问自己这个问题。大多数 WebExtension 功能都内置于浏览器本身中,但免费的命令行工具仍然会有所帮助。以下是部分示例列表: