歡迎來到存儲庫的Adblock Plus擴展名!
主要項目還託管在GitLab上,除了用戶界面和Web擴展代碼外,Adblock Plus擴展名還包括靜態過濾器列表,Eyeo的Web擴展廣告阻止工具包(EWE)和Eyeo的Snippets。
Adblock Plus是一個免費的擴展名,可允許用戶自定義其網絡體驗。用戶可以阻止煩人的廣告,禁用跟踪等等。它可用於所有主要桌面瀏覽器和移動設備。
Adblock Plus是根據GPLV3許可並遵守其使用條款的開源項目。 Eyeo GmbH是Adblock Plus的母公司。
為了為這個項目做出貢獻,您需要:
Node
應隨npm
安裝。如果沒有,您可以在此處下載npm
。
node-gyp
錯誤?如果您使用的是帶有Apple Silicon(ARM64 CPU)的Apple Machine,則可能會遇到一個錯誤,如果npm install
過程中node-gyp
無法構建。在這種情況下,您需要在任何其他命令之前運行arch -x86_64 zsh
,並確保您不使用nvm
運行節點版本。
另一個可能的原因是, node-gyp
無法在線找到二進製文件,然後試圖在本地構建二進製文件,並且由於安裝了Python 3.12而失敗,這無法與某些版本的node-gyp
一起使用。可以通過在本地安裝Python 3.11來解決, pyenv
可用於此。
重要的是:在Windows上,您需要在WSL上運行的Linux環境,並從Bash內部運行命令。
提示:如果您要在Archlinux中安裝node
,請記住也安裝npm
。
克隆此存儲庫後,打開其文件夾並運行npm install
。
Adblock Plus元素的規格可以在Eyeo的規格存儲庫中找到。
這些是用戶主要與之互動的頁面,因為它們通過瀏覽器的UI暴露於它們。
這些頁面專用於特定功能,可以通過UI頁面訪問。
這些是無法通過UI頁面訪問的頁面。它們要么是在某些條件下直接或間接由擴展開放的。
這些頁面是另一頁的一部分。它們並不是要自行顯示的。
這些是擴展邏輯的一部分,它與擴展背景過程中的其他擴展代碼一起運行。
如果您不想構建整個擴展程序,則可以使用本地Web服務器在測試環境中打開UI頁面。這可以通過運行npm start
來完成,這使您可以訪問終端中顯示的URL下的HTML頁面,例如http://127.0.0.0.1:8080。
可以通過在URL中設置參數來測試頁面的各個方面(請參閱URL參數列表)。
注意:您需要為要測試的UI頁面創建捆綁包。
./test/unit
文件夾包含可以通過npm run $ unit.legacy
運行的各種Mocha單元測試文件。對於.ts
文件,我們有可以通過npm run $ unit.standard
運行的嘲笑單元測試。這些可以通過npm test
一起運行。
./test/end-to-end/tests
文件夾包含各種端到端測試。這些測試可以在本地執行(在最新的穩定鉻,Firefox和Edge瀏覽器中),也可以使用Lambdatest執行。
在本地運行端到端測試:
例子:
cp .env.e2e.template .env.e2e
npm run build:release {chrome | firefox} -- --manifest-version {2 | 3}
MANIFEST_VERSION={2 | 3} BROWSER={chrome | firefox | edge} npm run test:end-to-end-local all
使用lambdatest運行端到端測試:
npm run test:end-to-end all
或npm run test:end-to-end-mv3 all
。 您可以用特定的測試套件( e2e
, integration
, smoke
)替換all
測試。
如果您只想執行單個測試文件,則可以將套件中all
屬性的值替換為僅包含要運行的測試路徑的數組。例子:
all : [ "./tests/test-options-page-dialog-links.js" ] ,
執行完成後,使用誘使記者來顯示結果。可以使用npm run test:generate-and-open-report
命令。
失敗測試的屏幕截圖可以保存到test/end-to-end/screenshots
合規性測試在本地版本的測試頁面上進行,以確保Adblock Plus和其他眼睛adblocking解決方案之間的合規性。他們使用Adblock Plus Extension的本地構建從測試頁項目中運行測試。
先決條件:
進行測試:
EXTENSION=dist/release/ < build file > MANIFEST={mv2 | mv3} ./test/compliance.sh
可選環境變量:
您可以通過npm run lint
或僅覆蓋特定文件類型來提起所有文件:
npm run eslint
npm run $ lint.css
npm run $ lint.locale
注意: eslint
和stylelint
都可以通過--fix
標誌來幫助解決問題。您可以通過NPX嘗試下面的示例,在安裝npm
時應自動包含該示例。
npx stylelint --fix css/real-file-name.css
該項目使用Gitlab CI運行包含構建和測試作業的管道。
可以從此頁面找到為特徵和釋放分支的夜間構建。
管道作業使用Google Cloud Platform(GCP)的自我管理跑步者。跑步者的設置是在DevOps Runner項目中定義的,可以在此處檢查跑步者狀態。 DevOps也可以授予訪問GCP資源(例如GCLOUD控制台)。
將.env.defaults
文件複製到根目錄中的.env
文件,並相應地填寫變量。可以跳過此步驟,僅當您希望啟用CDP數據時才需要。
為了構建擴展,您需要首先更新其依賴項。然後,您可以為要生成的構建類型運行以下命令:
npm run build:{dev | release} {chrome | firefox | local} [-- < options > ]
或者
npm run build:source
目標:
build:dev
:在Dist/Devenv/<Target>/中創建未包裝的擴展。它可以在基於鉻的瀏覽器中加載在Chrome:// Extensions/ lover:在Firefox中調試。
build:release
:創建以下擴展名構建文件,以dist/ repartion/可以發佈到各種擴展商店:
build:source
:在DIST/ RELASE/可以提供以下源存檔文件的以下目的:
--config <*.js file path>
:相對於AdblockPluschrome/gulpfile.js指定新配置文件的路徑(請參閱AdblockPluschrome/build/build/config/ )中的示例。
--manifest-path <*.json file path>
:指定新清單的路徑。JSON文件相對於adblockPluschrome/gulpfile.js (請參閱adblockpluschrome/build/tasks/tasks/subest.js中的示例)。
--manifest-version 3
或-m 3
:生成與Webextensions兼容的構建版本3。如果省略,它將為清單版本2生成構建。
--partial true
:運行不會重新構建圖標,規則和UI的構建。如果您的新更改不觸及擴展的任何部分,並且您可以從更快的構建時間中受益,這將很有用。請注意,您必須進行一次完整的構建,然後才能成功運行部分構建。
安裝所需的NPM軟件包:
npm install
重新運行上述命令時,依賴項可能發生了變化,例如檢查新的修訂後。
在使用UI之前,需要生成各種文件。當構建UI以包含在擴展中時,這是使用npm run dist
實現的。
對於測試環境中的使用情況,請運行build:dev
腳本以生成所有UI元素的各種捆綁包。
除此之外,該存儲庫還包含我們在開發過程中依賴的各種公用事業。
我們使用Sentry報告錯誤。為了在構建過程中初始化它,必須在.env
文件中或在(CI)構建過程中傳遞ADBLOCKPLUS_SENTRY_DSN
和ADBLOCKPLUS_SENTRY_ENVIRONMENT
變量。如果未初始化,請顯示控制台警告。默認情況下, ADBLOCKPLUS_SENTRY_ENVIRONMENT=production
。用戶電子郵件被剪切在客戶端,默認情況下對服務器端的數據擦洗進行了配置。
擴展版本(自3.11起)
擴展版本(3.11之前)
該項目遵循典型的gitlab過程: