Skip to main content

Хөгжүүлэлт


Хөгжүүлэлтийн гарын авлага​

Зөвхөн Англи хувилбарыг зас; орчуулгууд даган шинэчлэгдэнэ

Баримтжуулалтыг зөвхөн website/docs (Англи) дотор шинэчил. website/i18n/<locale>/… дахь орчуулгууд автоматаар үүсдэг тул гараар бүү зас. Локализацийн агуулгыг шинэчлэхэд орчуулгын даалгавруудыг (жиш., make translate_web_docs_batch) ашигла.

Урьдчилсан шаардлага​

  • Node.js 22+ болон npm (Node 22-оор туршсан)
  • Thunderbird 128 ESR эсвэл түүнээс шинэ (гараар тест хийхэд)

Төслийн бүтэц (өндөр түвшний)​

  • Root: савлагааны скрипт distribution_zip_packer.sh, баримт бичиг, скриншотууд
  • sources/: үндсэн нэмэлтийн код (background, тохиргоо/попап UI, манифестууд, дүрснүүд)
  • tests/: Vitest иж бүрдэл
  • website/: Docusaurus баримт (i18n нь website/i18n/de/... дор)

Суулгалт ба хэрэгслүүд​

  • Root хамаарлуудыг суулгах: npm ci
  • Баримт (заавал биш): cd website && npm ci
  • Зорилтуудыг олж мэдэх: make help

Шууд хөгжүүлэлт (web‑ext run)​

  • Firefox Desktop дээр хурдан давталт (зөвхөн UI smoke‑тест):
  • 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 event хуудсууд идэвхгүй үед түдгэлздэг; код өөрчлөгдсөний дараа нэмэлтийг дахин ачаал, эсвэл web‑ext автоматаар дахин ачаалуулахыг зөвшөөр.
  • Зөвхөн Firefox‑д байдаг зарим зан үйл өөр; API‑ийн нийцлийг баталгаажуулахын тулд үргэлж Thunderbird дээр шалга.
  • 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Орон нутгийн build/preview артефактуудыг устгах (tmp/, web-local-preview/, website/build/).
commitФорматлах, тестүүдийг ажиллуулах (i18n багтсан), өөрчлөлтийн тэмдэглэлийг шинэчлэх, commit & push хийх.
eslintESLint‑ийг flat конфигээр (npm run -s lint:eslint) ажиллуулах.
helpБүх зорилтыг нэг мөрийн тайлбартайгаар (эрэмбэлсэн) жагсаах.
lintsources/ дээр web‑ext lint (түр manifest; ZIP‑үүдийг үл тоомсорлоно; ноцтой бус).
menuХарилцан үйлчлэлтэй цэснээс зорилт болон нэмэлт аргумент сонгох.
packATN ба LOCAL ZIP‑уудыг бүтээх (linter ажиллуулна; packer скриптийг дуудаж).
prettierРепог газар дээр нь форматлах (өөрчлөлт бичнэ).
prettier_checkPrettier‑ийг шалгах горимоор (бичилтгүй); дахин формат хэрэгтэй бол алдаа өгнө.
prettier_writeprettier‑ийн синоним.
testPrettier (write), ESLint, дараа нь Vitest (coverage тохируулсан бол).
test_i18nЗөвхөн i18n тестүүд: нэмэлтийн placeholder/нийцэл + вэбсайтын нийцэл.
translate_apptranslation_app‑ийн синоним.
translation_appАппын UI мөрүүдийг sources/_locales/en/messages.json‑оос хөрвүүлэх.
translate_web_docs_batchВэбсайтын баримтыг OpenAI Batch API‑аар орчуулах (илүүд үзнэ).
translate_web_docs_syncВэбсайтын баримтыг синхрон хөрвүүлэх (уламжлалт, багц бус).
translate_web_indextranslation_web_index‑ийн синоним.
translation_web_indexНүүр/навигац/доод колонтитрын UI‑г орчуулах (website/i18n/en/code.json → .../<lang>/code.json).
web_buildБаримтыг website/build руу build хийх (--locales / BUILD_LOCALES дэмжинэ).
web_build_linkcheckОфлайнд аюулгүй холбоос шалгалт (алсын HTTP[S]‑г алгасна).
web_build_local_previewОрон нутгийн gh‑pages урьдчилсан харалт; 8080–8090 дээр автоматаар үйлчлэх; сонголтоор тест/холбоос шалгалт.
web_push_githubwebsite/build‑г gh-pages салбар руу түлхэх.

Сонголтын синтакс

  • Сонголтууд дамжуулахад make <command> OPTS="…" ашигла (ишлэл ашиглахыг зөвлөе). Доорх зорилт бүр жишээ хэрэглээг харуулна.

--

Локалийн build зөвлөмжүүд​

  • Локалийн дэд хэсгийг build хийх: BUILD_LOCALES="en de" тохируул, эсвэл вэб зорилтуудад OPTS="--locales en,de" дамжуул.
  • Тодорхой локалийг урьдчилан харах: http://localhost:<port>/Thunderbird-Reply-with-Attachments/de/.

Build ба багцлах​

  • ZIP‑ууд бүтээх: make pack
  • Репо root‑д ATN болон LOCAL ZIP‑уудыг үүсгэнэ (артефактуудыг гараар бүү зас)
  • Зөвлөмж: багцлахаас өмнө sources/manifest_ATN.json болон sources/manifest_LOCAL.json‑д хувилбарыг шинэчил
  • Гараар суулгах (dev): Thunderbird → Tools → Add‑ons and Themes → gear → Install Add‑on From File… → баригдсан ZIP‑ийг сонго

Тест​

  • Бүрэн иж бүрдэл: make test (Vitest)
  • Хамрах хүрээ (заавал биш):
  • npm i -D @vitest/coverage-v8
  • make test‑г ажиллуулаад; HTML тайланг coverage/index.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
  • Статик сайтыг build хийх: 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 дотор
  • Хайлт: Хэрэв CI‑д Algolia DocSearch орчны хувьсагчууд (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 холбоос бүхий fallback агуулна


Урьдчилсан харалтын зөвлөмжүүд​

  • Node preview‑г цэвэрхэн зогсоох: http://localhost:<port>/__stop нээнэ үү (Local server started‑ны дараа хэвлэгдэнэ).
  • Хэрэв MDX/JSX доторх зурагнууд ачаалахгүй байвал сайтын baseUrl‑г хүндэтгэхийн тулд useBaseUrl('/img/...') ашигла.
  • Урьдчилсан харалт эхэлж, холбоос шалгалт дараа нь ажиллана; энэ нь хаахгүй (задгай гадаад холбоосууд урьдчилсан харалтыг зогсоохгүй).
  • Урьдчилсан харалтын URL жишээ: http://localhost:<port>/Thunderbird-Reply-with-Attachments/ (“Local server started” дараа хэвлэгдэнэ).
  • Холбоос шалгалт дахь гадаад холбоосууд: Зарим гадаад сайтууд (ж., addons.thunderbird.net) автомат мөлхөгчдийг блоклодог тул шалгалтад 403 харагдаж магадгүй. Урьдчилсан харалт хэвээр эхэлнэ; эдгээрийг үл тоож болно.

Вэбсайтыг орчуулах​

Танд юу орчуулах боломжтой вэ

  • Зөвхөн вэбсайтын UI: нүүр хуудас, навигац, доод колонтитр болон бусад UI мөрүүд. Баримтын агуулга одоогоор зөвхөн англи хэвээр.

Хаана засварлах вэ

  • website/i18n/<locale>/code.json файлыг зас (жишээнд en‑г ашигла). {year}, {slash}, {ctrl}, {k}, {code1} зэрэг placeholder‑уудыг өөрчлөхгүй үлдээ.

Файлуудыг үүсгэх эсвэл шинэчлэх

  • Бүх локальд дутуу 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/

Илгээх

  • Зассан code.json файл(ууд)‑тай PR нээ. Өөрчлөлтүүдийг төвлөрүүлж, боломжтой бол хурдан скриншот хавсарга.

Аюулгүй байдал ба тохиргооны зөвлөмжүүд​

  • sources/manifest.json‑г commit хийж болохгүй (build явцад түр зуур үүсдэг)
  • Шинэчлэлтийн суваг тогтвортой байлгахын тулд browser_specific_settings.gecko.id‑г тогтвортой хадгал

Тохиргоонуудын хадгалалт​

  • Хадгалалт: Хэрэглэгчийн бүх тохиргоо storage.local дотор хадгалагдаж, нэмэлтийн шинэчлэлүүдийн хооронд хадгалагдана.
  • Суулгалт: Анхдагч утгууд нь түлхүүр үнэхээр байхгүй (undefined) үед л хэрэгжинэ.
  • Шинэчлэлт: Шилжилт зөвхөн дутаасан түлхүүрүүдийг бөглөнө; одоо байгаа утгууд огт дарж бичигдэхгүй.
  • Схемийн маркер: settingsVersion (одоогоор 1).
  • Түлхүүрүүд ба анхдагчууд:
  • blacklistPatterns: string[] → ['*intern*', '*secret*', '*passwor*']
  • confirmBeforeAdd: boolean → false
  • confirmDefaultChoice: 'yes'|'no' → 'yes'
  • warnOnBlacklistExcluded: boolean → true
  • Код: sources/background.js → initializeOrMigrateSettings() болон SCHEMA_VERSION‑г үз.

Хөгжүүлэлтийн урсгал (шинэ тохиргоо нэмэх)

  • sources/background.js дотор SCHEMA_VERSION‑г өсгө.
  • Шинэ түлхүүр + анхдагчийг initializeOrMigrateSettings() доторх DEFAULTS объектод нэм.
  • Анхдагчийг seed хийхдээ "only-if-undefined" дүрмийг хэрэглэ; байгаа утгуудыг бүү дарж бич.
  • Хэрэв тохиргоо хэрэглэгчид харагддаг бол sources/options.js‑д холбож, локалчилсан мөрүүдийг нэм.
  • Тест нэм/зас ( tests/background.settings.migration.test.js‑г үз).

Гараар тест хийх зөвлөмжүүд

  • Цоо шинэ суулгалтыг дуурайлгах: өргөтгөлийн өгөгдлийн сангийн хавтсыг цэвэрлэ эсвэл шинэ профайлаар эхлүүл.
  • Шинэчлэлтийг дуурайлгах: storage.local дотор settingsVersion‑г 0 болгон тохируулж дахин ачаал; байгаа утгууд өөрчлөгдөөгүй, зөвхөн дутуу түлхүүрүүд нэмэгдсэнийг баталгаажуул.

Алдааг олж засварлах​

  • Thunderbird 128 ESR эсвэл түүнээс шинэ эсэхийг баталгаажуул
  • Гүйлтийн асуудлуудад Алдааны консоль ашигла
  • Хэрэв хадгалсан тохиргоонууд зөв хэрэгжихгүй байгаа мэт санагдвал Thunderbird‑ийг дахин асаагаад дахин оролдоно уу. (Thunderbird сешн хооронд зарим төлөвийг кэшлэх магадлалтай; дахин асаалт шинэ тохиргоонуудыг цэвэр ачаална.)

CI ба хамрах хүрээ​

  • GitHub Actions (CI — Tests) нь vitest‑ийг хамрах хүрээний босготой (85% мөр/функц/салаа/мэдэгдэл) ажиллуулдаг. Хэрэв босго хангагдахгүй бол ажил бүтэлгүйтнэ.
  • Workflow нь HTML тайлан бүхий coverage-html артефактыг байршуулна; гүйцэтгэлийн хуудсаас татан ав (Actions → сүүлийн гүйлт → Artifacts).

Хувь нэмэр оруулах​

  • Салбар/commit/PR‑ийн зааварт CONTRIBUTING.md‑г үз
  • Зөвлөмж: Өдөр тутмын профайлдаа нөлөөлөхгүйн тулд тест хийхэд тусдаа Thunderbird хөгжүүлэлтийн профайл үүсгэ.

Орчуулгууд​

  • Том “all → all” орчуулгын ажлууд удаан, зардалтай байж болно. Эхлээд дэд хэсгээр (ж., хэдэн баримт ба 1–2 локаль) эхэлж, үр дүнг шалгаад, дараа нь өргөтгөөрэй.

  • Дахин оролтын бодлого: орчуулгын ажлууд API алдаанд 3 удаа хүртэл экспоненциал backoff‑той дахин оролдлого хийнэ; scripts/translate_web_docs_batch.js болон scripts/translate_web_docs_sync.js‑г үз.

Баримтын скриншотууд

  • Зурагнуудаа website/static/img/ дор хадгал.

  • Замууд сайтын baseUrl‑той зөв ажиллахын тулд MD/MDX дотор useBaseUrl('/img/<filename>') ашиглан ишил.

  • website/static/img/ дор зураг нэмж эсвэл нэр өөрчилсний дараа бүх ишлэлүүд useBaseUrl('/img/…')‑г үргэлжлүүлэн ашиглаж буйг баталгаажуулж, орон нутгийн урьдчилсан харалтад зөв дүрслэгдэж буй эсэхийг шалга. Favicons

  • Олон хэмжээтэй favicon.ico нь (Make + скриптүүд) бүх build замуудад website/scripts/build-favicon.mjs‑аар автоматаар үүсдэг.

  • Гараар алхам хийх шаардлагагүй; icon-*.png‑г шинэчлэхэд хангалттай. Шалгах зөвлөмж

  • Орчуулагдсан баримт дотор front‑matter дахь id‑г өөрчлөхгүй үлдээнэ; байвал зөвхөн title болон sidebar_label‑ийг орчуул.

clean​

  • Зорилго: орон нутгийн build/preview артефактуудыг устгах.
  • Ашиглалт: make clean
  • Устгана (хэрэв байвал):
  • tmp/
  • web-local-preview/
  • website/build/

commit​

  • Зорилго: форматлах, тест хийх, changelog шинэчлэх, commit хийж push хийх.
  • Ашиглалт: make commit
  • Дэлгэрэнгүй: Prettier (write), make test, make test_i18n ажиллуулна; stage‑д өөрчлөлт байвал changelog нэмж бичнэ; origin/<branch> руу push хийнэ.

eslint​

  • Зорилго: ESLint‑ийг flat конфигээр ажиллуулах.
  • Ашиглалт: make eslint

help​

  • Зорилго: бүх зорилтыг нэг мөрийн тайлбартайгаар жагсаах.
  • Ашиглалт: make help

lint​

  • Зорилго: MailExtension‑ийг web-ext ашиглан lint хийх.
  • Ашиглалт: make lint
  • Тэмдэглэл: түр хуулбарыг sources/manifest_LOCAL.json → sources/manifest.json; build‑лэсэн ZIP‑үүдийг үл тоомсорлоно; анхааруулгууд pipeline‑ийг унагахгүй.

menu​

  • Зорилго: Make зорилт болон нэмэлт аргументаа сонгох харилцан үйлчлэлтэй цэс.
  • Ашиглалт: аргументгүйгээр make ажиллуул.
  • Тэмдэглэл: хэрэв whiptail байхгүй бол цэс make help руу унадаг.

pack​

  • Зорилго: ATN болон LOCAL ZIP‑уудыг build хийх (lint‑ээс хамаарна).
  • Ашиглалт: make pack
  • Зөвлөмж: багцлахаас өмнө хоёуланд нь хувилбаруудыг sources/manifest_*.json дотор өсгө.

prettier​

  • Зорилго: репог газар дээр нь форматлах.
  • Ашиглалт: make prettier

prettier_check​

  • Зорилго: форматалтыг шалгах (бичилтгүй).
  • Ашиглалт: make prettier_check

prettier_write​

  • Зорилго: prettier‑ийн синоним.
  • Ашиглалт: make prettier_write

test​

  • Зорилго: Prettier (write), 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)
    • Ашиглалт (flag‑ууд): make translate_web_docs_batch OPTS="--files <doc1,doc2|all> --locales <lang1,lang2|all>"
    • Уламжлалт позициональ аргументууд бас зөвшөөрөгдөнө: OPTS="<doc|all> <lang|all>"
  • Зан үйл: JSONL бүтээж, upload хийж, 30 секунд тутамд шалгаж, үр дүн татаж авч, файлууд бичнэ.
  • Тэмдэглэл: багц ажил (batch job) OpenAI‑ийн batch цонхны дагуу 24 цаг хүртэл үргэлжилж болно. Консол бүр шалгалтад зарцуулсан хугацааг харуулна.
  • Орчин: OPENAI_API_KEY (шаардлагатай), сонголтоор OPENAI_MODEL, OPENAI_TEMPERATURE, OPENAI_BATCH_WINDOW (анхдагч 24h), BATCH_POLL_INTERVAL_MS.
  • Уламжлалт: translate_web_docs_sync
    • Ашиглалт (flag‑ууд): make translate_web_docs_sync OPTS="--files <doc1,doc2|all> --locales <lang1,lang2|all>"
    • Уламжлалт позициональ аргументууд бас зөвшөөрөгдөнө: OPTS="<doc|all> <lang|all>"
  • Зан үйл: хос бүрээр синхрон хүсэлтүүд (багцжуулалтгүй).
  • Тэмдэглэл: 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]"
  • Шаардлага: OPENAI_API_KEY‑г экспортло (сонголтоор: OPENAI_MODEL=gpt-4o-mini).
  • Зан үйл: JSON бүтэц баталгаажуулж, буржгар хаалттай placeholder‑уудыг хадгалж, URL‑уудыг өөрчлөхгүй, баталгаажуулалтын алдаанд санал хүсэлтээр дахин оролдлого хийнэ.

web_build​

  • Зорилго: баримтын сайтыг website/build руу build хийх.
  • Ашиглалт: make web_build OPTS="--locales en|de,en|all" (эсвэл BUILD_LOCALES="en de" тохируул)
  • Дотоод: node ./node_modules/@docusaurus/core/bin/docusaurus.mjs build [--locale …].
  • Хамаарал: хэрэв website/node_modules/@docusaurus байхгүй бол website/ дотор npm ci ажиллуулна.

web_build_linkcheck​

  • Зорилго: офлайнд аюулгүй холбоос шалгалт.
  • Ашиглалт: make web_build_linkcheck OPTS="--locales en|all"
  • Тэмдэглэл: tmp_linkcheck_web_pages руу build хийж; GH Pages‑ийн baseUrl‑г / болгон дахин бичнэ; алсын 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 preview серверийг оролдоно (scripts/preview-server.mjs, /__stop дэмжинэ), бүтэлгүйтвэл python3 -m http.server‑д унадаг; 8080–8090 дээр үйлчилнэ; PID нь web-local-preview/.server.pid дээр.

web_push_github​

  • Зорилго: website/build‑г gh-pages салбар руу түлхэх.
  • Ашиглалт: make web_push_github

Зөвлөмж: Makefile‑д ашиглах пакет менежерийг өөрчлөхийн тулд NPM=…‑г тохируул (анхдагч нь npm).