Энэ сайт хэрхэн баригддаг
docs.dgov.mn бол статик HTML. Апп сервер, өгөгдлийн сан, нэвтрэлт байхгүй —
site/build.mjs нь энэ репогийн Markdown-ыг уншиж site/dist/ дотор хуудсууд
гаргана, deploy/deploy.sh тэднийг сервер рүү rsync хийнэ.
Яагаад генератор биш, ердөө нэг скрипт вэ
Баримтууд нь эх сурвалж бөгөөд GitHub дээр уншигдсан хэвээр байх ёстой.
Сайтыг ажиллуулахын тулд Markdown-ыг засах шаардлага гарвал тэр нь сайт
баримтыг эзэмшиж эхэлсэн гэсэн үг. Тиймээс build.mjs нь frontmatter ч,
тусгай синтакс ч шаарддаггүй: GitHub дээр render болдог файл энд ч render
болно.
Загвар нь цөмийн баримтын сайт-тай
яг ижил — хоёулаа нэг платформын тухай ярьдаг тул нэг зүйл мэт уншигдах ёстой.
site/build.mjs ба site/theme.css нь тэндээс салбарласан бөгөөд ялгаа нь
хуудасны жагсаалт, брэнд, орчуулгын мөр байхгүй.
Бүтэц
README.md нүүр хуудас (slug: index)
docs/*.md бусад бүх хуудас
docs/assets/ зураг, icon — dist/assets/ руу хуулагдана
site/build.mjs Markdown → HTML, хуудасны жагсаалт энд
site/theme.css загвар
site/check-links.mjs дотоод холбоосын шалгалт
deploy/nginx/ docs.dgov.mn vhost
deploy/deploy.sh барих, шалгах, rsync хийх
Хуудас нэмэх
docs/дотор Markdown файл үүсгэ.site/build.mjs-ийнPAGESжагсаалтад нэг мөр нэм:src,slug,title,group.
Жагсаалтад байхгүй файл нийтлэгдэхгүй бөгөөд түүн рүү заасан холбоос GitHub руу гарна. Энэ нь санаатай: сайтаас гарсан холбоос эвдэрсэн холбоосоос дээр, мөн дуусаагүй бичвэрийг нийтлэхгүй байх хамгийн хялбар арга.
Холбоос дахин заалт
Бүх ажил үүнд л байна. Markdown доторх холбоос тухайн файлаасаа хамаарч харьцангуй бичигдсэн, сайт нь хавтасгүй тул href бүр эх файлынхаа хажуугаас шийдэгдээд гурван газрын нэг рүү заана:
| Юу руу заасан | Хаашаа очих |
|---|---|
| Нийтлэгдсэн өөр хуудас | <slug>.html |
docs/assets/ доторх файл |
assets/… |
| Репогийн бусад бүх зүйл | GitHub blob |
Тиймээс баримт дотор [Архитектур](ARCHITECTURE.md) гэж бичих нь GitHub дээр ч,
сайт дээр ч зөв ажиллана.
Барих
npm --prefix site ci
npm --prefix site run check # барих + холбоосын шалгалт
npm --prefix site run serve # http://localhost:4321
check-links.mjs нь Markdown дээр зөв харагддаг гурван гэмтлийг барина:
- Нийтлэгдээгүй хуудас руу заасан холбоос — ихэвчлэн
docs/дотор нэмээдPAGES-д нэмээгүй файл. - Дахин заагдаагүй
.mdhref — хөтөч түүнийг render хийхийн оронд татаж авна. - Байхгүй болсон гарчиг руу заасан
#fragment— уншигчийг чимээгүйхэн хуудасны толгой руу буулгадаг.
Зөвхөн дотоод холбоос шалгагдана. Гадаад URL амьд эсэх нь энэ репогийн барьж чадах үнэн биш бөгөөд сүлжээ рүү гардаг шалгагч нь хамааралгүй тасалдлыг баримтын барилтын алдаа болгож хувиргадаг.
Нийтлэх
./deploy/deploy.sh
Барилт, холбоосын шалгалт, rsync, гаднаас нь шалгах — дөрвүүлээ. Сервер дээр node байхгүй бөгөөд байх ч шаардлагагүй: тэнд очдог зүйл бол бэлэн HTML.
Сервер дээрх зам /var/www/docs.dgov.mn/, vhost нь
deploy/nginx/docs.dgov.mn.conf. rsync --delete ажилладаг тул устгасан хуудас
серверээс бас алга болно.
Тохируулах цэгүүд
| Юуг | Хаана |
|---|---|
| Хуудасны жагсаалт, цэсний бүлэг | site/build.mjs → PAGES |
| Дээд цэс, брэнд, footer | site/build.mjs → shell() |
| Өнгө, хэмжээ | site/theme.css |
| Домэйн, зам | deploy/deploy.sh → DOCS_HOST, DOCS_ROOT |