Astro preview --background 怎麼用?用 status、logs、stop 管理本機預覽
執行 astro preview 時,終端機被長時間佔住是正常行為:它原本就是用來服務已建置的網站預覽。Astro 7.2.0 新增 --background 與一組生命週期子命令,讓你可以啟動後繼續執行檢查,再用 status、logs 和 stop 管理預覽程序。
這個功能只改變預覽程序的管理方式,不會替你重新建置網站,也不會把本機 preview 變成 production server。先確認 CLI 版本,再把 build、preview、HTTP 檢查和清理拆成幾個明確步驟。
先確認 Astro 版本,再啟動背景預覽
preview --background 是 Astro 7.2.0 的新功能。先查專案實際使用的 CLI,避免把最新文件的參數套到仍鎖在舊版的專案:
pnpm exec astro --version接著先建立要檢查的 production output,再啟動背景程序:
pnpm buildpnpm exec astro preview --background如果 CLI 回報未知選項,先看版本和 lockfile,而不是先改 port。舊版 Astro 沒有這個 flag;應該安排正式的 Astro 升級,再按照 Astro 7 升級與 Vite 8 的檢查清單 驗證 integration、plugin 和輸出。
用子命令查看狀態與 Log
背景預覽啟動後,可以在同一個專案脈絡執行:
pnpm exec astro preview statuspnpm exec astro preview logspnpm exec astro preview logs --followstatus 適合確認程序是否還在執行與取得預覽資訊;logs 適合先看啟動錯誤,--follow 則用於觀察一段時間內的 request 或 runtime 輸出。完成檢查後不要留下舊程序:
pnpm exec astro preview stop如果你修改了 Markdown、astro.config.mjs 或其他會影響輸出的檔案,請重新執行 pnpm build。背景 preview 不會 watch source,也不會自動更新 dist/;它只會繼續服務上一次成功建出的內容。
CI 可以把啟動與清理寫在同一個流程
需要對 build 後的 HTML 做 smoke test 時,把程序的停止動作放進 cleanup:
set -euo pipefail
pnpm buildpnpm exec astro preview --backgroundtrap 'pnpm exec astro preview stop || true' EXIT
pnpm exec astro preview statuscurl --fail --silent --show-error http://localhost:4321/ > /dev/null實際 port 依專案設定與 Astro CLI 輸出調整;重點是不要用背景 shell、kill 或模糊的 process name 猜哪個程序該停。用 Astro 自己提供的 lifecycle 命令,讓 log、失敗狀態和 cleanup 路徑比較容易被閱讀與重跑。
如果 CI 本身已經有 process supervisor、timeout 和 log collector,則可以選擇讓它管理前景程序,不要讓 Astro 的自動背景模式和外部管理器同時接管。
AI coding agent 可能會自動啟用背景模式
Astro 7.2.0 的 release note 說明,當它偵測到 astro preview 是由 AI coding agent 執行時,可能自動啟用背景模式,讓 agent 得以繼續工作。這對互動式開發很方便,但若 automation runner 預期 preview 綁定在自己的 process group,就應明確關閉:
ASTRO_PREVIEW_BACKGROUND=0 pnpm exec astro preview這個環境變數是 opt-out,不是把舊版 Astro 變出新功能。若版本還不到 7.2.0,仍要用舊的前景 preview 流程,或先升級後再驗證。
Preview 不是部署與 production server
astro preview 只驗證 astro build 產生的輸出。它不負責:
- 監看原始碼並即時 rebuild。
- 提供 production 的 TLS termination、process supervisor 或 health check。
- 取代 Cloudflare、Caddy 或其他 hosting 的正式部署流程。
如果你是在確認靜態站生成後的路由、資產和 404,可以把它當短生命週期的本機檢查工具;正式部署仍要按照 hosting 的輸出模型與 runtime 邊界處理。啟動成功只能證明 preview server 起來,不能證明 production 的 domain、cache、redirect 和 bindings 都已經正確。
最後可用這個順序排查:先確認 Astro 版本 → 重新 build → 啟動 background preview → 查看 status/logs → 做代表性 request → stop。 這樣能把 build 失敗、preview process 失敗和部署環境問題分開。
常見問題
Q: astro preview --background 會自動重新建置嗎?
A: 不會。它服務的是最近一次 astro build 產生的輸出。修改內容或設定後,先重新執行 build,再重啟或重新檢查 preview,避免把舊的 dist/ 當成最新結果。
Q: 怎麼停止 Astro 的背景 preview?
A: 從相同的專案環境執行 pnpm exec astro preview stop。如果不確定程序是否存在,可以先執行 pnpm exec astro preview status,再把 stop 放進 CI 的 trap 或其他 cleanup 流程。
Q: 為什麼 automation 裡的 Astro preview 還是卡住終端機?
A: 可能是安裝的 Astro 版本沒有 --background,也可能是工作流使用了前景命令,或已用 ASTRO_PREVIEW_BACKGROUND=0 關閉自動背景模式。先執行 pnpm exec astro --version,再決定升級、明確使用 --background,或交給外部 process supervisor 管理。
參考資料:
回報錯字、失效連結,或告訴我你想看的延伸主題。