該程式碼庫已棄用。從 Adblock Plus 3.11 開始,適用於 Chrome、Firefox、Microsoft Edge 和 Opera 的 Adblock Plus 基於 adblockplusui 儲存庫。
Web 擴充功能的核心廣告攔截整合的開發已轉移到 webext-sdk 儲存庫。
該儲存庫包含適用於 Chrome、Opera、Microsoft Edge 和 Firefox 的平台特定 Adblock Plus 原始碼。它可用於為這些平台建立 Adblock Plus。
在 Windows 上,您需要在 WSL 上執行的 Linux 環境。然後安裝上述要求並從 Bash 中執行以下命令。
克隆外部儲存庫:
git submodule update --init --recursive
注意:從來源存檔建置時,必須跳過此步驟。
安裝所需的 npm 套件:
npm install
當依賴關係可能發生變更時,例如在簽出新修訂版後,請重新執行上述命令。
在專案目錄下執行以下命令:
npx gulp build -t {chrome|firefox} [-c development]
這將建立一個名稱格式為adblockpluschrome-nnnzip或adblockplusfirefox-nnnxpi的建置。這些構建未簽名。它們可以按原樣提交到擴展存儲,或者在開發模式下解壓縮加載以進行測試(與下面的 devenv 構建相同)。
為了簡化測試變更的過程,您可以建立一個未打包的開發環境。為此,請執行以下命令之一:
npx gulp devenv -t {chrome|firefox}
這將在專案目錄中建立一個devenv.*目錄。您可以在基於 Chromium 的瀏覽器中的chrome://extensions下以及在 Firefox 中的about:debugging下將該目錄作為解壓擴充功能載入。更改原始程式碼後,重新執行命令來更新開發環境,擴充功能應在幾秒鐘後自動重新載入。
如果您希望基於我們的程式碼建立擴充功能並使用相同的建置工具,我們提供一些自訂選項。
這可以透過以下方式完成:
指定相對於gulpfile.mjs
新設定檔的路徑(它應該與build/config/
中找到的結構相符)。
npx gulp {build|devenv} -t {chrome|firefox} --config config.mjs
指定新的manifest.json
檔案相對於gulpfile.mjs
的路徑。您應該檢查build/manifest.json
和build/tasks/manifest.mjs
以了解我們如何修改它。
npx gulp {build|devenv} -t {chrome|firefox} -m manifest.json
要驗證您的更改,您可以使用位於儲存庫的qunit目錄中的單元測試套件。為了執行單元測試,請轉到擴充功能的「選項」頁面,開啟 JavaScript 控制台並輸入:
location.href = "qunit/index.html";
頁面載入後,單元測試將自動運行。
還有一個外部測試運行程序,可以從命令列調用,以便在不同瀏覽器上運行單元測試以及一些集成測試,並自動運行 linter。
在 Windows 上,為了使用測試執行器,除瞭如上所述設定 Linux 環境之外,您還需要在本機 Windows 環境中安裝 Node.js。然後從 PowerShell 或 cmd.exe 執行以下命令(與建置需要從 Bash 完成的擴充功能不同)。
在 Linux 上,較新版本的 Chromium 需要libgbm
。
確保所需的軟體包已安裝並且是最新的:
npm install
開始所有瀏覽器的測試過程:
npm test
僅在一個瀏覽器中啟動測試程序:
npm test -- -g <Firefox|Chromium|Edge>
為了運行其他測試子集,請檢查 Mocha 文件中的-g
選項。
預設情況下,它會下載(並快取)並針對每個瀏覽器的最舊相容版本和最新發行版本運行測試。為了針對不同版本執行測試,請設定CHROMIUM_BINARY
、 FIREFOX_BINARY
或EDGE_BINARY
環境變數。接受以下值:
installed
path:<path>
download:<version>
<major>.<minor>
形式,對於 Chromium,這必須是修訂號)。此選項不適用於 Edge。過濾器測試子集使用 ABP 測試頁面。為了在不同版本的測試頁上執行這些測試,請設定TEST_PAGES_URL環境變數。此外,為了接受不安全的https
證書,請將TEST_PAGES_INSECURE環境變數設為"true"
。
在執行 Edge 測試之前需要安裝 Edge Chromium。
您可以使用 ESLint 對程式碼進行 lint 處理。
您需要先進行設定。這將安裝我們的配置 eslint-config-eyeo 以及運行後所需的所有內容:
npm install
然後你可以運行 lint 程式碼:
npm run lint