文件發布流程
本機建置
npm run build 會依序執行:
scripts/prepare-assets.mjs- 把
logo.png與config.yaml複製到.vitepress/public-runtime/,作為 VitePresspublicDir。
- 把
vitepress build .- 編譯
docs/*.md與docs/**/*.md;新增頁面只要建立對應的 Markdown 檔案就會被自動產生。 cleanUrls: true會產生downloads.html/changelog.html/en/index.html等無副檔名的路徑。sitemap設定會自動把新頁面加入sitemap.xml。
- 編譯
scripts/prepare-sites-dist.mjs- 輸出
dist/client/(靜態網站)。 - 正式主機由 Caddy 以
try_files提供 clean URL fallback,因此不需要輸出_worker.js或dist/server/。
- 輸出
實際託管方式
- 主機:
[email protected](SSH)。 - 靜態根目錄:
/srv/astercore-docs/current(ln -sfn指向上方releases/<date>-<sha8>)。 - Web server:Caddy,以
try_files提供 clean URL fallback。 - 前置:Cloudflare 設定為 DYNAMIC,僅做前置與 DNS,不負責靜態路由或 Functions。
Caddy 站點設定範例:
caddy
astercore.fubukishop.app {
root * /srv/astercore-docs/current
file_server
try_files {path} {path}.html {path}/index.html
}部署命令
在 docs/ 執行:
sh
npm run build
node scripts/deploy-site.mjs或以 --dry-run 預覽:
sh
node scripts/deploy-site.mjs --dry-run手動 tar+SSH 範例(腳本已避免 PowerShell $( ) 展開問題):
sh
dt=$(date +%Y%m%d)
sha=$(git rev-parse --short=8 HEAD)
name=${dt}-${sha}
rel=/srv/astercore-docs/releases/${name}
tar -czf - -C dist/client . | ssh [email protected] \
"mkdir -p ${rel} && tar -xzf - -C ${rel} && ln -sfn ${rel} /srv/astercore-docs/current"新增路由如何生效
/downloads:建立docs/downloads.md,VitePress 產生downloads.html;Caddytry_files會自動以{path}.html回應。/changelog:建立docs/changelog.md,VitePress 產生changelog.html。/en/:建立docs/en/index.md,VitePress 產生en/index.html。
Caddy try_files {path} {path}.html {path}/index.html 會同時支援 /downloads、/changelog、/en/、/en 等路徑;未知路徑仍回 404。
