這是一個命令列工具,可協助建置、執行和測試 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 功能都內建在瀏覽器本身中,但免費的命令列工具仍然會有所幫助。以下是部分範例清單: