Распрацоўка
Кіраўніцтва па распрацоўцы
Рэдагуйце толькі англі йскую; пераклады распаўсюджваюцца
Абнаўляйце дакументацыю толькі ў website/docs (англійская). Пераклады ў website/i18n/<locale>/… генеруюцца і не павінны рэдагавацца ўручную. Выкарыстоўвайце задачы перакладу (напрыклад, make translate_web_docs_batch), каб абнавіць лакалізаваны кантэнт.
Папярэднія патрабаванні
- Node.js 22+ і npm (пратэставана з Node 22)
- Thunderbird 128 ESR або навейшы (для ручнога тэставання)
Структура праекта (высокі ўзровень)
- Корань: скрыпт упакоўкі
distribution_zip_packer.sh, дакументацыя, здымкі экрана sources/: асноўны код дадатку (background, UI опцый/ўсплывальнага акна, маніфесты, значкі)tests/: набор тэстаў Vitestwebsite/: дакументацыя Docusaurus (з i18n уwebsite/i18n/de/...)
Усталяванне і інструменты
- Усталюйце залежнасці ў корані:
npm ci - Дакументацыя (неабавязкова):
cd website && npm ci - Паглядзець мэты:
make help
Жывая распрацоўка (web‑ext run)
- Хуткі цыкл у Firefox Desktop (толькі smoke‑тэсты UI):
npx web-ext run --source-dir sources --target=firefox-desktop- Запусціць у Thunderbird (пераважна для MailExtensions):
npx web-ext run --source-dir sources --start-url about:addons --firefox-binary "$(command -v thunderbird || echo /path/to/thunderbird)"- Парады:
- Трымайце адкрытай Кансоль памылак Thunderbird (Tools → Developer Tools → Error Console).
- Старонкі падзей MV3 прыпыняюцца ў стане бяздзеяння; перазагружайце дадатак пасля змен кода або дазвольце web‑ext аўтаматычна перазагружаць.
- Некаторыя паводзіны, уласныя Firefox, адрозніваюцца; заўжды правярайце ў Thunderbird для адпаведнасці API.
- Шляхі да выканальных файлаў Thunderbird (прыклады):
- Linux:
thunderbird(напрыклад,/usr/bin/thunderbird) - macOS:
/Applications/Thunderbird.app/Contents/MacOS/thunderbird - Windows:
"C:\\Program Files\\Mozilla Thunderbird\\thunderbird.exe" - Ізаляцыя профілю: выкарыстоўвайце асобны профіль Thunderbird для распрацоўкі, каб не закранаць паўсядзённую канфігурацыю.
Мэты Make (па алфавіце)
Makefile ўніфікуе тыповыя працоўныя плыні распрацоўкі. Запускайце make help у любы час, каб атрымаць кароткі апісальны радок для кожнай мэты.
Парада: запуск make без мэты адкрывае простае меню Whiptail для выбару мэты.
| Мэта | Кароткае апісанне ў адзін радок |
|---|---|
clean | Выдаліць лакальныя артэфакты зборкі/прагляду (tmp/, web-local-preview/, website/build/). |
commit | Сфарматаваць, запусціць тэсты (у т.л. i18n), абнавіць changelog, закоміціць і запушыць. |
eslint | Запусціць ESLint праз flat‑канфіг (npm run -s lint:eslint). |
help | Пералічыць усе мэты з кароткай дакументацыяй (упарадкавана). |
lint | web‑ext lint на sources/ (часовы маніфест; ігнаруе ZIP‑ы; без збою па папярэджаннях). |
menu | Інтэрактыўнае меню для выбару мэты і неабавязковых аргументаў. |
pack | Збудаваць ZIP‑ы ATN і LOCAL (запускае лінтар; выклікае скрыпт упакоўкі). |
prettier | Сфарматаваць рэпазіторый на месцы (з запісам змен). |
prettier_check | Prettier у рэжыме праверкі (без запісу); правальваецца, калі патрэбна перафарматаванне. |
prettier_write | Псеўданім для prettier. |
test | Prettier (запіс), ESLint, потым Vitest (пакрыццё, калі сканфігуравана). |
test_i18n | Тэсты толькі i18n: плейсхолдары/парнасць дадатку + парнасць сайта. |
translate_app | Псеўданім для translation_app. |
translation_app | Перакласці радкі UI прыкладання з sources/_locales/en/messages.json. |
translate_web_docs_batch | Перакласці дакументацыю сайта праз OpenAI Batch API (пераважна). |
translate_web_docs_sync | Перакласці дакументацыю сайта сінхронна (спадчына, без batch). |
translate_web_index | Псеўданім для translation_web_index. |
translation_web_index | Перакласці UI галоўнай/навігацыі/футэра (website/i18n/en/code.json → .../<lang>/code.json). |
web_build | Збудаваць дакі ў website/build (падтрымлівае --locales / BUILD_LOCALES). |
web_build_linkcheck | Бяспечная для аўтаномнага рэжыму праверка спасылак (мінае аддаленыя HTTP[S]). |
web_build_local_preview | Лакальны папярэдні прагляд gh‑pages; аўтасэрвіс на 8080–8090; неабавязковыя тэсты/чэк спасылак. |
web_push_github | Запушыць website/build у галіну gh-pages. |
Syntax for options
- Выкарыстоў вайце
make <command> OPTS="…"для перадачы параметраў (рэкамендуюцца двукоссі). Кожная мэта ніжэй паказвае прыклад выкарыстання.
--
Парады па зборцы лакацый
- Збіраць падмноства лакацый: усталюйце
BUILD_LOCALES="en de"або перадайцеOPTS="--locales en,de"вэб‑мэтам. - Папярэдні прагляд пэўнай лакалі:
http://localhost:<port>/Thunderbird-Reply-with-Attachments/de/.
Зборка і ўпакоўка
- Збудаваць ZIP‑ы:
make pack - Стварае ZIP‑ы ATN і LOCAL у корані рэпазіторыя (не рэдагуйце артэфакты ўручную)
- Парада: абновіце версію і ў
sources/manifest_ATN.json, і ўsources/manifest_LOCAL.jsonперад упакоўкай - Ручная ўстаноўка (распрацоўка): Thunderbird → Tools → Add‑ons and Themes → шасцярэнька → Install Add‑on From File… → выберыце збудаваны ZIP
Тэсты
- Поўны набор:
make test(Vitest) - Пакрыццё (неабавязкова):
npm i -D @vitest/coverage-v8- Запусціце
make test; адкрыйцеcoverage/index.htmlдля HTML‑справаздачы - Толькі i18n:
make test_i18n(ключы/плейсхолдары UI/тытулы + парнасць сайта па лакалі і дакуменце з праверкамі id/title/sidebar_label)
Адладка і журналы
- Кансолі памылак: Tools → Developer Tools → Error Console
- Пераключэнне падрабязных логаў падчас працы:
- Уключыць:
messenger.storage.local.set({ debug: true }) - Выключыць:
messenger.storage.local.set({ debug: false }) - Логі з'яўляюцца падчас напісання/адпраўкі адказаў
Дакументацыя (вэб‑сайт)
- Сервер распрацоўніка:
cd website && npm run start - Збудаваць статычны с айт:
cd website && npm run build - Эквіваленты Make (па алфавіце):
make web_build,make web_build_linkcheck,make web_build_local_preview,make web_push_github - Прыклады выкарыстання:
- Толькі EN, без тэстаў/праверкі спасылак, без push:
make web_build_local_preview OPTS="--locales en --no-test --no-link-check --dry-run" - Усе лакалі, з тэстамі/праверкай спасылак, затым push:
make web_build_local_preview && make web_push_github - Перад публікацыяй запусціце бяспечную для аўтаномнага рэжыму праверку спасылак:
make web_build_linkcheck. - i18n: англійская знаходзіцца ў
website/docs/*.md; нямецкія пераклады ўwebsite/i18n/de/docusaurus-plugin-content-docs/current/*.md - Пошук: калі зменныя асяроддзя Algolia DocSearch зададзены ў CI (
DOCSEARCH_APP_ID,DOCSEARCH_API_KEY,DOCSEARCH_INDEX_NAME), сайт выкарыстоўвае пошук Algolia; інакш выкарыстоўваецца лакальны пошук. На галоўнай старонцы націсніце/абоCtrl+K, каб адкрыць поле пошуку.