Skip to main content

Рушд


Дастури рушд

Танҳо англисиро таҳрир кунед; тарҷумаҳо паҳн мешаванд

Ҳуҷҷатҳоро танҳо зери 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-и options/popup, манифестҳо, иконҳо)
  • tests/: маҷмӯаи Vitest
  • website/: ҳуҷҷатҳои Docusaurus (бо i18n дар website/i18n/de/...)

Насб ва абзорҳо

  • Насби вобастагиҳои реша: npm ci
  • Ҳуҷҷатҳо (ихтиёрӣ): cd website && npm ci
  • Кашфи ҳадафҳо: make help

Рушди зинда (web‑ext run)

  • Давраи зуд дар Firefox Desktop (танҳо санҷишҳои оддии 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, commit ва push.
eslintИҷрои ESLint тавассути конфиги ҳамвор (npm run -s lint:eslint).
helpРӯйхати ҳамаи ҳадафҳо бо ҳуҷҷатҳои яксатра (сортшуда).
lintweb‑ext lint дар sources/ (манифести муваққатӣ; ZIP-ҳоро нодида мегирад; ғайримарговар).
menuМенюи интерактивӣ барои интихоби ҳадаф ва аргументҳои ихтиёрӣ.
packСохтани ZIP-ҳои ATN ва LOCAL (linter-ро иҷро мекунад; скрипти бастабандиро фаро мехонад).
prettierФорматкунии репозиторӣ дар ҷой (тағйиротро менависад).
prettier_checkPrettier дар ҳолати санҷиш (бе навишт); агар бозформаткунӣ лозим бошад, ноком мешавад.
prettier_writeАлиас барои prettier.
testPrettier (навишт), ESLint, сипас Vitest (coverage агар танзим шуда бошад).
test_i18nТанҳо тестҳои i18n: placeholder-ҳо/баробарӣ дар илова + баробарии вебсайт.
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_githubPush website/build ба шохаи gh-pages.

Синтаксис барои опсияҳо

  • Барои додани опсияҳо аз 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/placeholder/сарлавҳаҳо + баробарии вебсайт барои ҳар локал ва ҳар ҳуҷҷат бо санҷишҳои 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-ро пахш кунед, то қуттии ҷустуҷӯ кушода шавад.

  • website/src/pages/donate.js
  • Роҳ: /donate (ва /<locale>/donate)
  • Рафтор:
  • Агар роҳи ҷорӣ локал дошта бошад (масалан, /de/donate), ҳамонро истифода баред
  • Дар акси ҳол, беҳтарин мувофиқро аз navigator.languages нисбат ба локалҳои танзимшуда интихоб кунед; ба локали пешфарз баргардед
  • Бозгардон ба:
  • en/docs/donation
  • дигарон → /<locale>/docs/donation
  • Барои коркарди дурусти baseUrl аз useBaseUrl истифода мебарад
  • meta refresh + пайванди noscript-ро ҳамчун эҳтиёт дар бар мегирад


Маслиҳатҳо барои пешнамоиш

  • Пешнамоиши Node-ро ба таври пок қатъ кунед: http://localhost:<port>/__stop-ро кушоед (пас аз Local server started чоп мешавад).
  • Агар тасвирҳо дар MDX/JSX бор нашаванд, аз useBaseUrl('/img/...') истифода баред, то baseUrl-и сайт риоя шавад.
  • Аввал пешнамоиш оғоз меёбад; санҷиши пайванд баъдан иҷро шуда, бастанӣ нест (пайвандҳои берунаи вайрон пешнамоишро намеистанд).
  • URL‑и намунавии пешнамоиш: http://localhost:<port>/Thunderbird-Reply-with-Attachments/ (пас аз “Local server started” чоп мешавад).
  • Пайвандҳои беруна дар санҷиши пайванд: Баъзе сайтҳои беруна (масалан, addons.thunderbird.net) роботҳоро мебанданд ва метавонанд дар санҷишҳои пайванд 403 нишон диҳанд. Пешнамоиш ҳамоно оғоз мешавад; инҳоро метавонед нодида гиред.

Тарҷумаи вебсайт

Чиро метавонед тарҷума кунед

  • Танҳо UI‑и вебсайт: саҳифаи асосӣ, навбар, футер ва сатрҳои дигари UI. Мундариҷаи ҳуҷҷатҳо ҳоло танҳо ба англисӣ мемонад.

Куҷо таҳрир кардан

  • website/i18n/<locale>/code.json-ро таҳрир кунед (en-ро ҳамчун истинод истифода баред). Placeholder‑ҳо мисли {year}, {slash}, {ctrl}, {k}, {code1}-ро тағйир надиҳед.

Эҷод ё навсозии файлҳо

  • Эҷоди stubs‑ҳои нопурра барои ҳамаи локалҳо: npm --prefix website run i18n:stubs
  • Аз болои stubs аз англисӣ нависед (пас аз иловаи сатрҳои нав): npm --prefix website run i18n:stubs:force
  • Алтернатива барои як локал: npx --prefix website docusaurus write-translations --locale <locale>

Тарҷумаи сатрҳои UI-и саҳифаи асосӣ/навбар/футер (OpenAI)

  • Як бор эҷоди иттилооти дастрасӣ (дар shell ё .env):
  • export OPENAI_API_KEY=sk-...
  • Ихтиёрӣ: export OPENAI_MODEL=gpt-4o-mini
  • Якҳарба (ҳама локалҳо, бе en): make translate_web_index
  • Маҳдуд ба локалҳои мушаххас: make translate_web_index OPTS="--locales de,fr"
  • Аз болои қиматҳои мавҷуда нависед: make translate_web_index OPTS="--force"

Санҷиш ва кӯшишҳои такрорӣ

  • Скрипти тарҷума шакли JSON-ро месанҷад, placeholder‑ҳои қавсҳои ҷингиларо нигоҳ медорад ва мутмаин мешавад, ки URL‑ҳо тағйир намеёбанд.
  • Ҳангоми нокомии санҷиш, то 2 бор бо фикру мулоҳизаҳо бозкӯшиш мекунад, сипас қиматҳои мавҷударо нигоҳ медорад.

Пешнамоиши локали худ

  • Сервери рушдӣ: npm --prefix website run start
  • Ба http://localhost:3000/<locale>/Thunderbird-Reply-with-Attachments/ ворид шавед

Пешниҳод

  • Як PR бо файл(ҳо)-и code.json‑и таҳриршуда кушоед. Тағйиротро мухтасар нигоҳ доред ва ҳангоми имкон скриншоти зуд замима кунед.

Маслиҳатҳои амният ва конфигуратсия

  • sources/manifest.json-ро commit накунед (аз ҷониби сохт муваққатан эҷод мешавад)
  • Барои нигоҳ доштани канали навсозӣ browser_specific_settings.gecko.id-ро устувор нигоҳ доред

Пойдории танзимот

  • Захира: Ҳамаи танзимоти корбар дар storage.local нигоҳ дошта мешаванд ва дар навсозиҳои илова пойдор мемонанд.
  • Насб: Пешфарзҳо танҳо вақте истифода мешаванд, ки калид комилан намерасад (undefined).
  • Навсозӣ: Мигратсия танҳо калидҳои нопурраро пур мекунад; қиматҳои мавҷуда ҳеҷ гоҳ аз нав навишта намешаванд.
  • Нишондиҳандаи схема: settingsVersion (ҳоло 1).
  • Калидҳо ва пешфарзҳо:
  • blacklistPatterns: string[]['*intern*', '*secret*', '*passwor*']
  • confirmBeforeAdd: booleanfalse
  • confirmDefaultChoice: 'yes'|'no''yes'
  • warnOnBlacklistExcluded: booleantrue
  • Код: нигаред sources/background.jsinitializeOrMigrateSettings() ва SCHEMA_VERSION.

Ҷараёни рушд (илова кардани танзими нав)

  • SCHEMA_VERSION-ро дар sources/background.js баланд бардоред.
  • Калиди нав + пешфарзро ба объекти DEFAULTS дар initializeOrMigrateSettings() илова кунед.
  • Ҳангоми коштани пешфарзҳо қоидаи "танҳо‑агар‑undefined"‑ро истифода баред; қиматҳои мавҷударо аз нав нанависед.
  • Агар танзим барои корбар намоён бошад, онро дар sources/options.js васл кунед ва сатрҳои локализатсияшударо илова кунед.
  • Тестҳоро илова/дарҷ кунед (нигаред tests/background.settings.migration.test.js).

Маслиҳатҳои санҷиши дастӣ

  • Насби навро тақлид кунед: директорияи додаҳои васеъшавиро тоза кунед ё бо профили нав оғоз намоед.
  • Навсозиро тақлид кунед: settingsVersion-ро ба 0 дар storage.local гузоред ва аз нав бор кунед; тасдиқ кунед, ки қиматҳои мавҷуда тағйир наёфтаанд ва танҳо калидҳои нопурра илова мешаванд.

Ислоҳи мушкилот

  • Итминон ҳосил кунед, ки Thunderbird 128 ESR ё навтар аст
  • Барои мушкилоти вақти иҷро аз Консоли хатогӣ истифода баред
  • Агар танзимоти захирашуда дуруст татбиқ нашуда метобанд, Thunderbird-ро бозоғоз кунед ва боз кӯшиш намоед. (Thunderbird метавонад ҳолатро байни ҷаласаҳо кэш кунад; бозоғозӣ кафолат медиҳад, ки танзимоти тару тоза бор мешаванд.)

CI ва пӯшиш

  • GitHub Actions (CI — Tests) vitest‑ро бо остонҳои пӯшиш (85% хатҳо/функсияҳо/шохаҳо/ифодот) иҷро мекунад. Агар остонаҳо иҷро нашаванд, кор ноком мешавад.
  • Ҷараён артефакти coverage-html-ро бо гузориши HTML бор мекунад; онро аз саҳифаи иҷро (Actions → охирин иҷро → Artifacts) зеркашӣ кунед.

Ҳамкорӣ

  • Барои қоидаҳои branch/commit/PR ба CONTRIBUTING.md нигаред
  • Маслиҳат: барои санҷиш як профили ҷудогонаи рушдии Thunderbird эҷод кунед, то ба профили ҳаррӯза таъсир нарасонад.

Тарҷумаҳо

  • Иҷрои корҳои калонҳаҷми тарҷумаи “ҳама → ҳама” метавонад суст ва гарон шавад. Аз зермаҷмӯа оғоз кунед (масалан, чанд ҳуҷҷат ва 1–2 локал), натиҷаро баррасӣ кунед, сипас васеъ намоед.

  • Сиёсати кӯшишҳои такрорӣ: корҳои тарҷума то 3 бозкӯшиш бо ақибнишинии экспоненсиалӣ ҳангоми хатогиҳои API анҷом медиҳанд; нигаред scripts/translate_web_docs_batch.js ва scripts/translate_web_docs_sync.js.

Скриншотҳо барои ҳуҷҷатҳо

  • Тасвирҳоро дар зери website/static/img/ нигоҳ доред.

  • Онҳоро дар MD/MDX тавассути useBaseUrl('/img/<filename>') истинод кунед, то роҳҳо бо baseUrl‑и сайт кор кунанд.

  • Пас аз илова ё иваз кардани номҳои тасвирҳо зери website/static/img/, тасдиқ кунед, ки ҳама истинодҳо ҳамоно useBaseUrl('/img/…')‑ро истифода мебаранд ва дар пешнамоиши маҳаллӣ намоиш меёбанд. Фавиконҳо

  • Бисёр‑андозаи favicon.ico дар ҳамаи роҳҳои сохт (Make + scripts) тавассути website/scripts/build-favicon.mjs худкор тавлид мешавад.

  • Қадами дастӣ лозим нест; icon-*.png‑ро навсозӣ кардан кофист. Маслиҳати баррасӣ

  • Дар ҳуҷҷатҳои тарҷумашуда front‑matter‑и id‑ро тағйир надиҳед; танҳо title ва sidebar_label‑ро ҳангоми мавҷуд будан тарҷума кунед.

clean

  • Мақсад: хориҷ кардани артефактҳои маҳаллии сохт/пешнамоиш.
  • Истифода: make clean
  • Хориҷ мекунад (агар мавҷуд бошад):
  • tmp/
  • web-local-preview/
  • website/build/

commit

  • Мақсад: формат, тест, навсозии changelog, commit ва push.
  • Истифода: make commit
  • Тафсилот: Prettier (навишт), make test, make test_i18n‑ро иҷро мекунад; ҳангоми мавҷуд будани фарқиятҳои staged ба changelog зам мекунад; ба origin/<branch> push мекунад.

eslint

  • Мақсад: иҷрои ESLint тавассути конфиги ҳамвор.
  • Истифода: make eslint

help

  • Мақсад: рӯйхати ҳамаи ҳадафҳо бо ҳуҷҷатҳои яксатра.
  • Истифода: make help

lint

  • Мақсад: lint барои MailExtension бо web-ext.
  • Истифода: make lint
  • Эзоҳҳо: sources/manifest_LOCAL.jsonsources/manifest.json муваққан нусхабардорӣ мешавад; ZIP‑ҳои сохташуда нодида гирифта мешаванд; огоҳӣҳо конвейерро намешикананд.

menu

  • Мақсад: менюи интерактивӣ барои интихоби ҳадафи Make ва аргументҳои ихтиёрӣ.
  • Истифода: make‑ро бе аргументҳо иҷро кунед.
  • Эзоҳҳо: агар whiptail дастрас набошад, меню ба make help мегузарад.

pack

  • Мақсад: сохтани ZIP‑ҳои ATN ва LOCAL (вобаста ба lint).
  • Истифода: make pack
  • Маслиҳат: пеш аз бастабандӣ версияҳоро дар sources/manifest_*.json баланд бардоред.

prettier

  • Мақсад: формат кардани репо дар ҷой.
  • Истифода: make prettier

prettier_check

  • Мақсад: тасдиқи формат (бе навишт).
  • Истифода: make prettier_check

prettier_write

  • Мақсад: алиас барои prettier.
  • Истифода: make prettier_write

test

  • Мақсад: Prettier (навишт), ESLint, баъдан Vitest (агар coverage насб шуда бошад).
  • Истифода: make test

test_i18n

  • Мақсад: тестҳои тамаркузшуда ба i18n барои сатрҳои илова ва ҳуҷҷатҳои вебсайт.
  • Истифода: make test_i18n
  • Иҷро мекунад: npm run test:i18n ва npm run -s test:website-i18n.

translate_app / translation_app

  • Мақсад: тарҷумаи сатрҳои UI‑и илова аз EN ба локалҳои дигар.
  • Истифода: make translation_app OPTS="--locales all|de,fr"
  • Эзоҳҳо: сохтори калид ва placeholder‑ҳоро нигоҳ медорад; ба translation_app.log лог менависад. Намуди скрипт: node scripts/translate_app.js --locales ….

translate_web_docs_batch / translate_web_docs_sync

  • Мақсад: тарҷумаи ҳуҷҷатҳои вебсайт аз website/docs/*.md ба website/i18n/<locale>/....
  • Афзал: translate_web_docs_batch (OpenAI Batch API)
    • Истифода (парчамҳо): make translate_web_docs_batch OPTS="--files <doc1,doc2|all> --locales <lang1,lang2|all>"
    • Позиционалии меросӣ ҳамоно қабул мешавад: OPTS="<doc|all> <lang|all>"
  • Рафтор: JSONL месозад, бор мекунад, ҳар 30с пурсиш мекунад, натиҷаҳоро зеркашӣ карда, файлҳоро менависад.
  • Эзоҳ: кори batch метавонад то 24 соат тӯл кашад (барои равзанаи batch-и OpenAI). Консоль вақти гузаштаашро дар ҳар пурсиш нишон медиҳад.
  • Env: OPENAI_API_KEY (лозим), ихтиёрӣ OPENAI_MODEL, OPENAI_TEMPERATURE, OPENAI_BATCH_WINDOW (пешфарз 24h), BATCH_POLL_INTERVAL_MS.
  • Меросӣ: translate_web_docs_sync
    • Истифода (парчамҳо): make translate_web_docs_sync OPTS="--files <doc1,doc2|all> --locales <lang1,lang2|all>"
    • Позиционалии меросӣ ҳамоно қабул мешавад: OPTS="<doc|all> <lang|all>"
  • Рафтор: дархостҳои синхронии ҷуфт‑ба‑ҷуфт (бе агрегатсияи batch).
  • Эзоҳҳо: ҳангоми OPTS нододашуда, саволҳои интерактивӣ. Ҳар ду ҳолат блокҳои код/коди inline‑ро нигоҳ медоранд ва front‑matter‑и id-ро тағйир намедиҳанд; логҳо ба translation_web_batch.log (batch) ё translation_web_sync.log (sync) менависанд.

translate_web_index / translation_web_index

  • Мақсад: тарҷумаи сатрҳои UI‑и вебсайт (саҳифаи асосӣ, навбар, футер) аз website/i18n/en/code.json ба ҳамаи локалҳо зери website/i18n/<locale>/code.json (ба истиснои en).
  • Истифода: make translate_web_index ё make translate_web_index OPTS="--locales de,fr [--force]"
  • Талабот: export OPENAI_API_KEY (ихтиёрӣ: OPENAI_MODEL=gpt-4o-mini).
  • Рафтор: сохтори JSON‑ро тасдиқ мекунад, placeholder‑ҳои қавсҳои ҷингиларо нигоҳ медорад, URL‑ҳоро тағйир намедиҳад ва дар ҳолати хатои санҷиш бо фикру мулоҳизаҳо бозкӯшиш мекунад.

web_build

  • Мақсад: сохтани сайти ҳуҷҷатҳо ба website/build.
  • Истифода: make web_build OPTS="--locales en|de,en|all"BUILD_LOCALES="en de"-ро танзим кунед)
  • Дохилӣ: node ./node_modules/@docusaurus/core/bin/docusaurus.mjs build [--locale …].
  • Вобаста: npm ci-ро дар website/ танҳо агар website/node_modules/@docusaurus набошад, иҷро мекунад.

web_build_linkcheck

  • Мақсад: санҷиши пайвандҳои офлайн‑бехатар.
  • Истифода: make web_build_linkcheck OPTS="--locales en|all"
  • Эзоҳҳо: ба tmp_linkcheck_web_pages месозад; baseUrl‑и GH Pages‑ро ба / менависад; пайвандҳои дурдасти HTTP(S)‑ро мегузарад.

web_build_local_preview

  • Мақсад: пешнамоиши маҳаллии gh‑pages бо тестҳо/санҷиши пайванд ихтиёрӣ.
  • Истифода: make web_build_local_preview OPTS="--locales en|all [--no-test] [--no-link-check] [--dry-run] [--no-serve]"
  • Рафтор: аввал сервери пешнамоиши Node‑ро месанҷад (scripts/preview-server.mjs, /__stop‑ро дастгирӣ мекунад), сипас ба python3 -m http.server мегузарад; дар 8080–8090 хизмат мерасонад; PID дар web-local-preview/.server.pid.

web_push_github

  • Мақсад: push website/build ба шохаи gh-pages.
  • Истифода: make web_push_github

Маслиҳат: NPM=…‑ро танзим кунед, то менеҷери бастаҳои истифодашуда аз тарафи Makefile‑ро бознависӣ кунед (пешфарз npm).