Adblock Plus 확장자의 저장소에 오신 것을 환영합니다!
주요 프로젝트는 Gitlab에서 호스팅되며 사용자 인터페이스 및 웹 확장 코드 외에도 Adblock Plus Extension에는 정적 필터 목록, Eyeo의 웹 확장 광고 차단 툴킷 (EWE) 및 Eyeo의 스 니펫도 포함됩니다.
Adblock Plus는 사용자가 웹 경험을 사용자 정의 할 수있는 무료 확장입니다. 사용자는 성가신 광고를 차단하고 추적을 비활성화 할 수 있습니다. 모든 주요 데스크톱 브라우저 및 모바일 장치에서 사용할 수 있습니다.
Adblock Plus는 GPLV3에 따라 라이센스가 부여 된 오픈 소스 프로젝트이며 이용 약관에 따라 다릅니다. Eyeo Gmbh는 Adblock Plus의 모회사입니다.
이 프로젝트에 기여하려면 다음이 필요합니다.
Node npm 과 함께 설치해야합니다. 그렇지 않은 경우 여기에서 npm 다운로드 할 수 있습니다.
node-gyp 오류? Apple Silicon (ARM64 CPU)이있는 Apple 기계를 사용하는 경우 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 + 요소에 대한 사양은 Eyeo의 사양 저장소에서 찾을 수 있습니다.
이 페이지는 사용자가 브라우저의 UI를 통해 노출되기 때문에 주로 상호 작용하는 페이지입니다.
이 페이지는 특정 기능에 전념하고 UI 페이지를 통해 액세스 할 수있는 페이지입니다.
UI 페이지를 통해 액세스 할 수없는 페이지입니다. 특정 조건 하에서 확장에 의해 직접 또는 간접적으로 열립니다.
이 페이지는 다른 페이지의 일부인 페이지입니다. 그들은 스스로 보여주지 않습니다.
이들은 확장자의 배경 프로세스에서 다른 확장 코드와 함께 실행되는 확장 논리의 일부입니다.
전체 확장자를 빌드하지 않으려면 로컬 웹 서버를 사용하여 테스트 환경에서 UI 페이지를 열 수 있습니다. 이것은 npm start 실행하여 수행 할 수 있으며,이를 통해 터미널에 표시된 URL (예 : http://127.0.1:8080)의 HTML 페이지에 액세스 할 수 있습니다.
URL에서 매개 변수를 설정하여 페이지의 다양한 측면을 테스트 할 수 있습니다 (URL 매개 변수 목록 참조).
참고 : 테스트하려는 UI 페이지의 번들을 만들어야합니다.
./test/unit 폴더에는 npm run $ unit.legacy 통해 실행할 수있는 다양한 Mocha Unit Tests 파일이 포함되어 있습니다. .ts 파일의 경우 npm run $ unit.standard 를 통해 실행할 수있는 JEST 장치 테스트가 있습니다. npm test 통해 함께 실행할 수 있습니다.
./test/end-to-end/tests 폴더에는 다양한 엔드 투 엔드 테스트가 포함되어 있습니다. 이 테스트는 로컬로 (최신 안정적인 크롬, 파이어 폭스 및 에지 브라우저에서) 로컬로 실행하거나 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 allLambDatest를 사용하여 엔드 투 엔드 테스트를 실행하려면 :
npm run test:end-to-end all 또는 npm run test:end-to-end-mv3 all . all 테스트를 특정 테스트 스위트 ( e2e , integration , smoke )로 교체 할 수 있습니다.
단일 테스트 파일 만 실행하려면 Suites.js의 all 속성 값을 실행하려는 테스트 경로 만 포함 된 배열로 바꿀 수 있습니다. 예:
all : [ "./tests/test-options-page-dialog-links.js" ] , Allure Reporter는 실행이 완료된 후 결과를 표시하는 데 사용됩니다. 보고서는 npm run test:generate-and-open-report 명령을 사용하여 생성 및 열 수 있습니다.
실패한 테스트의 스크린 샷은 test/end-to-end/screenshots 으로 저장됩니다
준수 테스트는 AdBlock Plus와 기타 Eyeo AdBlocking 솔루션 간의 준수를 보장하기 위해 로컬 버전의 테스트 페이지에서 실행됩니다. AdBlock Plus 확장의 로컬 빌드를 사용하여 TestPages 프로젝트에서 테스트를 실행합니다.
전제 조건 :
테스트를 실행하려면 :
EXTENSION=dist/release/ < build file > MANIFEST={mv2 | mv3} ./test/compliance.sh선택적 환경 변수 :
npm run lint 또는 RINT를 통해 모든 파일을 보풀을 뿌릴 수 있습니다.
npm run eslintnpm run $ lint.cssnpm run $ lint.locale 참고 : eslint 와 stylelint 모두 --fix 플래그를 통해 문제를 해결하는 데 도움이 될 수 있습니다. npm 설치할 때 자동으로 포함 해야하는 NPX를 통해 아래 예제를 시도 할 수 있습니다.
npx stylelint --fix css/real-file-name.css
이 프로젝트는 Gitlab CI를 사용하여 빌드 및 테스트 작업이 포함 된 파이프 라인을 실행합니다.
기능 및 릴리스 브랜치를위한 야간 빌드는이 페이지의 아티팩트로 찾을 수 있습니다.
파이프 라인 작업은 GCP (Google Cloud Platform)의 자체 관리 러너를 사용합니다. 러너의 설정은 DevOps 러너 프로젝트에 정의되어 있으며 러너 상태는 여기에서 확인할 수 있습니다. GCLOUD 콘솔과 같은 GCP 리소스에 대한 액세스는 DevOps에서도 부여 할 수 있습니다.
루트 디렉토리의 .env.defaults 파일을 .env 파일로 복사하고 그에 따라 변수를 채우십시오. 이 단계는 건너 뛸 수 있으며 CDP 데이터를 전송하려는 경우에만 필요합니다.
확장을 구축하려면 먼저 종속성을 업데이트해야합니다. 그런 다음 생성하려는 빌드 유형에 대해 다음 명령을 실행할 수 있습니다.
npm run build:{dev | release} {chrome | firefox | local} [-- < options > ]또는
npm run build:source대상 :
build:dev : Dist/devenv/<garget>/ 에서 분리 된 확장을 생성합니다. Chrome : // Extensions/ Chromium 기반 브라우저에서 및 About : Firefox의 디버깅 하에서로드 할 수 있습니다.
build:release : Dist/ Release/ 에서 다음 확장 빌드 파일을 생성합니다. 이는 다양한 확장점에 게시 할 수 있습니다.
build:source : 검토 목적으로 확장 스토어에 제공 할 수있는 Dist/ Release/ 에 다음 소스 아카이브 파일을 생성합니다.
--config <*.js file path> : AdBlockpluschrome/gulpfile.js 에 대한 새 구성 파일의 경로를 지정하십시오 ( AdBlockpluschrome/build/config/ 의 예 참조).
--manifest-path <*.json file path> : adblockpluschrome/gulpfile.js 에 대한 새로운 manifest.json 파일의 경로를 지정합니다 ( AdBlockpluschrome/build/tasks/manifest.js 의 예 참조).
--manifest-version 3 또는 -m 3 : WebExtensions Manifest 버전 3과 호환되는 빌드를 생성합니다. 생략하면 Manifest 버전 2를위한 빌드가 생성됩니다.
--partial true : 아이콘, 규칙 및 UI를 다시 구축하지 않는 빌드를 실행하십시오. 이는 새로운 변경 사항이 확장의 강화 된 부분에 닿지 않는 경우 유용하며, 더 빠른 빌드 시간의 혜택을 누릴 수 있습니다. 부분 빌드를 성공적으로 실행하기 전에 한 번 전체 빌드를 실행해야합니다.
필요한 NPM 패키지를 설치하십시오.
npm install
의존성이 변경되었을 때 위의 명령을 다시 실행하십시오. 예를 들어 새 개정판을 확인한 후.
UI를 사용하기 전에 다양한 파일을 생성해야합니다. 확장에 포함시키기 위해 UI를 구축 할 때는 npm run dist 사용하여 달성됩니다.
테스트 환경에서 사용하려면 build:dev 스크립트를 실행하여 모든 UI 요소에 대한 다양한 번들을 생성하십시오.
그 외에도이 저장소에는 개발 프로세스 전반에 걸쳐 의존하는 다양한 유틸리티가 포함되어 있습니다.
우리는 센트리를 사용하여 오류를보고합니다. 빌드 중에 초기화하려면 하나는 ADBLOCKPLUS_SENTRY_DSN 및 ADBLOCKPLUS_SENTRY_ENVIRONMENT 변수를 .env 파일 또는 (CI) 빌드 중에 환경 변수로 전달해야합니다. 초기화되지 않으면 콘솔 경고가 표시됩니다. 기본적으로 ADBLOCKPLUS_SENTRY_ENVIRONMENT=production . 사용자 이메일은 클라이언트 측에서 잘립니다. 서버 측의 데이터 스크럽은 기본적으로 구성됩니다.
확장 릴리스 (3.11 이후)
확장 릴리스 (3.11 이전)
이 프로젝트는 일반적인 gitlab 프로세스를 따릅니다.