该代码库已弃用。从 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