HUAN 讙 · 開發者

GitHub Pages

文件站以 Astro 建置成靜態網站,由 GitHub Actions 部署到 GitHub Pages。

啟用

  1. GitHub repository → SettingsPages
  2. SourceGitHub Actions

這是一次性的手動步驟。workflow 刻意不使用 configure-pagesenablement: true 自動開啟——建立 Pages 站台需要 repository 的管理權限,而 GITHUB_TOKEN 沒有,失敗訊息會是一句看不出原因的 Resource not accessible by integration

沒有先完成這一步時,設定 GitHub Pages 會停在:

Get Pages site failed. Error: Not Found

Workflow

.github/workflows/docs.yml 的流程:

checkout

pnpm 與 Node 設定

pnpm install --frozen-lockfile

pnpm build:packages

configure-pages(取得 origin)

pnpm docs:build

upload-pages-artifact

deploy-pages

網域與 base

HUAN 的文件站部署在 https://docs.huan.linyao.tw,服務在根路徑,因此 base 固定是 /,設定檔裡沒有任何子路徑的處理。

自訂網域在 Settings → Pages → Custom domain 設定即可,不需要public/CNAME 檔案——用 GitHub Actions 部署時,網域設定存在 repository 的 Pages 設定裡,不是從產物讀出來的。

gh api repos/<owner>/<repo>/pages | jq '{cname, https_enforced, html_url}'

site 由 workflow 從 configure-pages 的輸出帶入,只有它會影響絕對連結;fork 出去換網域時覆寫 DOCS_SITE_ORIGIN 即可,設定檔裡不需要動。

AI 可讀的輸出

src/pages/ 底下有三個端點,在建置時一起輸出:

檔案產生者內容
llms.txtllms.txt.ts全站結構化索引
llms-full.txtllms-full.txt.ts全站內容的單一 Markdown 檔
<route>.md[...slug].md.ts每一頁的 Markdown 版本

順序跟著 src/lib/navigation.ts 的側欄走,因此索引的結構和讀者看到的目錄一致。

這讓 AI 工具不必解析 HTML 就能讀懂整份文件。site 設定正確時,這些檔案裡的連結才會指向真實可存取的網址——這也是為什麼它必須由 workflow 帶入。

本機預覽

pnpm docs:dev                      # 開發伺服器(搜尋不可用,索引要建置後才有)
pnpm docs:build                    # SSG 建置到 apps/docs/dist,並產生 Pagefind 索引
pnpm --filter @huan/docs preview   # 預覽建置結果

本機建置出來的絕對連結會指向正式網域。要換成別的網域:

DOCS_SITE_ORIGIN=https://docs.example.com pnpm docs:build