欢迎来到存储库的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 eslintnpm run $ lint.cssnpm 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过程: