Willkommen im Repository für die Adblock Plus -Erweiterung!
Das Hauptprojekt wird auf GitLab gehostet, und zusätzlich zur Benutzeroberfläche und im Web -Erweiterungscode enthält die Adblock Plus -Erweiterung auch statische Filterlisten, die Web -Erweiterungs -Ad -Blocking -Toolkit von Eyeo (EWE) und die Snippets von Eyeo.
Adblock Plus ist eine kostenlose Erweiterung, mit der Benutzer ihre Weberlebnisse anpassen können. Benutzer können nervige Anzeigen blockieren, die Verfolgung deaktivieren und vieles mehr. Es ist für alle großen Desktop -Browser und für mobile Geräte verfügbar.
Adblock Plus ist ein Open -Source -Projekt, das unter GPLV3 lizenziert ist und seinen Nutzungsbedingungen unterliegt. Eyeo GmbH ist die Muttergesellschaft von Adblock Plus.
Um zu diesem Projekt beizutragen, brauchen Sie:
Node
sollte mit npm
installiert werden. Wenn dies nicht der Fall ist, können Sie npm
hier herunterladen.
node-gyp
-Fehler? Wenn Sie eine Apple-Maschine mit Apple Silicon (ARM64-CPU) verwenden, können Sie auf einen Fehler stoßen, bei dem node-gyp
während npm install
nicht erstellt wird. In diesem Fall müssen Sie arch -x86_64 zsh
vor anderen Befehlen ausführen und sicherstellen, dass Sie nvm
nicht verwenden, um die Knotenversion auszuführen.
Eine weitere mögliche Ursache ist, dass node-gyp
das binäre Online-Antrag nicht mehr finden und dann versucht, die Binärdatei lokal zu bauen und aufgrund der Installation von Python 3.12 fehlschlägt, was nicht mit einigen Versionen von node-gyp
funktioniert. Dies könnte gelöst werden, indem Python 3.11 lokal installiert wird, und dafür könnte pyenv
verwendet werden.
Wichtig: Unter Windows benötigen Sie eine Linux -Umgebung, die auf WSL ausgeführt wird, und führen Sie die Befehle innerhalb von Bash aus.
Tipp : Wenn Sie node
in Archlinux installieren, denken Sie bitte auch daran, npm
zu installieren.
Öffnen Sie nach dem Klonen dieses Repositorys seinen Ordner und führen Sie npm install
aus.
Spezifikationen für Adblock Plus -Elemente finden Sie im Spec -Repository von Eyeo.
Dies sind Seiten, mit denen Benutzer hauptsächlich interagieren, weil sie ihnen über die UI des Browsers ausgesetzt sind.
Dies sind Seiten, die einer bestimmten Funktion gewidmet sind und über UI -Seiten zugegriffen werden können.
Dies sind Seiten, auf die über UI -Seiten nicht zugegriffen werden kann. Sie werden entweder direkt oder indirekt unter bestimmten Bedingungen durch die Erweiterung geöffnet.
Dies sind Seiten, die Teil einer anderen Seite sind. Sie sollen nicht alleine gezeigt werden.
Dies sind Teile der Erweiterungslogik, die neben dem anderen Erweiterungscode im Hintergrundprozess der Erweiterung ausgeführt werden.
Wenn Sie nicht die gesamte Erweiterung erstellen möchten, können Sie UI -Seiten in einer Testumgebung mit einem lokalen Webserver öffnen. Dies kann durch Ausführen von npm start
erfolgen, mit dem Sie auf die HTML -Seiten unter der URL zugreifen können, die im Terminal, z. B. http://127.0.0.1:8080, angezeigt wird.
Verschiedene Aspekte der Seiten können getestet werden, indem Parameter in der URL festgelegt werden (siehe Liste der URL -Parameter).
Hinweis : Sie müssen die Bündel für die UI -Seite (n) erstellen, die Sie testen möchten.
./test/unit
Ordner npm run $ unit.legacy
Für .ts
-Dateien haben wir Scherz -Unit -Tests, die über npm run $ unit.standard
ausgeführt werden können. Diese können über npm test
zusammen ausgeführt werden.
Der Ordner ./test/end-to-end/tests
enthält verschiedene End- und End-Tests. Diese Tests können lokal durchgeführt werden (im neuesten stabilen Chrom-, Firefox- und Edge -Browser) oder sie können mit LambDatest ausgeführt werden.
Um die End-to-End-Tests lokal durchzuführen:
Beispiel:
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
Um die End-to-End-Tests mit LambDatest durchzuführen:
npm run test:end-to-end all
oder npm run test:end-to-end-mv3 all
. Sie können all
Tests durch eine bestimmte Testsuite ( e2e
, integration
, smoke
) ersetzen.
Wenn Sie nur eine einzelne Testdatei ausführen möchten, können Sie den Wert der all
Eigenschaft in Suites.js in einem Array ersetzen, das nur den Pfad zu den Tests enthält, die Sie ausführen möchten. Beispiel:
all : [ "./tests/test-options-page-dialog-links.js" ] ,
Allure Reporter wird zur Anzeige der Ergebnisse nach Abschluss der Ausführung verwendet. Der Bericht kann mit dem npm run test:generate-and-open-report
.
Screenshots von fehlenden Tests werden gespeichert, um zu test/end-to-end/screenshots
Compliance -Tests werden auf einer lokalen Version von Tests durchgeführt, um die Einhaltung von Adblock Plus und anderen Eyeo Adblocking -Lösungen zu gewährleisten. Sie führen die Tests aus dem Testpages -Projekt mit einem lokalen Build der Adblock Plus -Erweiterung durch.
Voraussetzungen:
Um die Tests durchzuführen:
EXTENSION=dist/release/ < build file > MANIFEST={mv2 | mv3} ./test/compliance.sh
Optionale Umgebungsvariablen:
Sie können alle Dateien über npm run lint
oder FINT nur bestimmte Dateitypen ausführen:
npm run eslint
npm run $ lint.css
npm run $ lint.locale
Hinweis : Sowohl eslint
als auch stylelint
können dazu beitragen, Probleme über --fix
-Flag zu beheben. Sie können das folgende Beispiel über NPX ausprobieren, das bei der Installation npm
automatisch enthalten sein sollte.
npx stylelint --fix css/real-file-name.css
Das Projekt verwendet Gitlab CI, um Pipelines mit Bau- und Testjobs zu betreiben.
Nightly Builds für Feature- und Release -Zweige finden Sie als Artefakte von dieser Seite.
Pipeline-Jobs verwenden selbst verwaltete Läufer von der Google Cloud Platform (GCP). Das Setup des Läufers ist im DevOps Runner -Projekt definiert, und der Läuferstatus kann hier überprüft werden. Der Zugang zu GCP -Ressourcen wie der GCloud -Konsole kann auch von DevOps gewährt werden.
Kopieren Sie die Datei .env.defaults
im Stammverzeichnis in eine .env
-Datei und füllen Sie die Variablen entsprechend aus. Dieser Schritt kann übersprungen werden und ist nur erforderlich, wenn Sie das Senden von CDP -Daten aktivieren möchten.
Um die Erweiterung zu erstellen, müssen Sie zuerst die Abhängigkeiten aktualisieren. Sie können dann den folgenden Befehl für die Art des Builds ausführen, die Sie generieren möchten:
npm run build:{dev | release} {chrome | firefox | local} [-- < options > ]
oder
npm run build:source
Ziele:
build:dev
: Erstellt eine ausgepackte Erweiterung in Dist/Devenv/<ziel>/ . Es kann unter Chrome: // Erweiterungen/ in Browsern auf Chrombasis und unter etwa: Debugging in Firefox geladen werden.
build:release
: Erstellt die folgenden Erweiterungs -Build -Dateien in Dist/ Release/ , die in den verschiedenen Erweiterungsgeschäften veröffentlicht werden können:
build:source
: Erstellt die folgende Quellarchivdatei in Dist/ Release/ , die für Überprüfungszwecke an Erweiterungsspeicher bereitgestellt werden kann:
--config <*.js file path>
: Geben Sie einen Pfad zu einer neuen Konfigurationsdatei in Bezug auf adblockpluschnome/gulpFile.js an (siehe Beispiele in Adblockpluschnome/Build/config/ ).
--manifest-path <*.json file path>
: Geben Sie einen Pfad zu einer neuen Manifest.json- Datei in Bezug auf Adblockpluschnome/gulpfile.js an (siehe Beispiele in Adblockpluschnome/Build/Tasks/Manifest.js ).
--manifest-version 3
oder -m 3
: Generieren Sie einen Build, der mit WebexpENSsions-Manifestversionen kompatibel ist. Wenn Sie weggelassen werden, wird ein Build für Manifest Version 2 generiert.
--partial true
: Führen Sie einen Build aus, der die Symbole, die Regeln und die Benutzeroberfläche nicht neu aufbauen wird. Dies ist nützlich, wenn Ihre neuen Änderungen keine der verblüfften Teile der Erweiterung berühren und Sie von der schnelleren Bauzeit profitieren können. Beachten Sie, dass Sie einmal einen vollständigen Build durchführen müssen, bevor Sie erfolgreich einen Teilbau ausführen können.
Installieren Sie die erforderlichen NPM -Pakete:
npm install
Wiederholen Sie die oben genannten Befehle, wenn sich die Abhängigkeiten möglicherweise geändert haben, z. B. nach der Überprüfung einer neuen Revision.
Vor der Verwendung der Benutzeroberfläche müssen verschiedene Dateien generiert werden. Beim Erstellen der Benutzeroberfläche zur Aufnahme in die Erweiterung wird diese mit npm run dist
erreicht.
Führen Sie die build:dev
in der Testumgebung aus, um die verschiedenen Bündel für alle UI -Elemente zu generieren.
Darüber hinaus enthält dieses Repository verschiedene Dienstprogramme, auf die wir uns in unserem Entwicklungsprozess verlassen.
Wir verwenden Sentry, um die Fehler zu melden. Um es während des Builds zu initialisieren, muss man ADBLOCKPLUS_SENTRY_DSN
und ADBLOCKPLUS_SENTRY_ENVIRONMENT
in einer .env
-Datei oder als Umgebungsvariable während des (CI) Builds. Wenn nicht initialisiert, wird die Konsolenwarnung angezeigt. Standardmäßig ADBLOCKPLUS_SENTRY_ENVIRONMENT=production
. Benutzer -E -Mails werden auf der Clientseite gesetzt und das Datenschrubben auf der Serverseite standardmäßig konfiguriert.
Verlängerungsveröffentlichungen (seit 3.11)
Verlängerungsveröffentlichungen (vor 3.11)
Dieses Projekt folgt dem typischen GitLab -Prozess: