跳到正文

靜態網站 ​

Zenavo 用 Caddy 在 8080 連接埠上提供靜態網站,每次部署時從你的儲存庫建置。

純 HTML ​

有 index.html 而沒有 package.json 的儲存庫會被識別為 static:檔案按原樣提供。

需要建置的網站(Vite、React、Vue、Svelte、Astro) ​

框架建置產物是靜態檔案的 Node.js 專案,例如 Vite、Create React App、Vue、使用 static adapter 的 SvelteKit 或 Astro,會用它的 build 指令碼建置,然後提供輸出資料夾。zbpack 知道每個框架的輸出資料夾(Vite 是 dist,Create React App 是 build);建置計劃預覽 中顯示為 outputDir。如果是其他資料夾,在 設定 → 建置 → zbpack 選項 中設定:

sh
ZBPACK_OUTPUT_DIR=public

單頁應用 ​

用戶端路由(React Router、Vue Router)無需設定即可使用:沒有副檔名、也沒有匹配到檔案的路徑會返回 index.html,而缺失的資源(例如 /assets/app.js)仍然返回 404。

靜態網站中的變數 ​

靜態網站沒有伺服器端,所以它的變數,例如 Vite 的 VITE_*(import.meta.env.VITE_API_URL)或 Create React App 的 REACT_APP_*,必須在建置時就存在。變數 分頁中的變數只提供給執行中的服務,所以這類變數要在 設定 → 建置 → 建置參數 中設定,例如:

sh
VITE_API_URL=https://api.example.com

沒有 Dockerfile 時它們也能傳入建置;見建置參數。使用自己的 Dockerfile 時,在建置指令之前為每個變數加一行 ARG。打包產物中的所有內容都是公開的:不要在這些變數中放任何機密。

部署 ​

  1. 新增服務 → GitHub,選擇儲存庫和分支。
  2. 點選 下一步,確認預覽顯示 static,或者 nodejs 以及你的框架和輸出資料夾,然後點選 部署。
  3. 在 網路 分頁生成網域,或者繫結自己的網域。

其他生成器 ​

對於 Hugo、Jekyll、MkDocs 或 zbpack 不認識的生成器,可以提交建置好的輸出並把 ZBPACK_OUTPUT_DIR 設為它,也可以新增一個建置並提供網站的 Dockerfile:

dockerfile
FROM hugomods/hugo:exts AS build
WORKDIR /src
COPY . .
RUN hugo --minify

FROM caddy:2-alpine
COPY --from=build /src/public /usr/share/caddy
EXPOSE 80

常見問題 ​

現象原因
重新整理 / 以外的頁面返回 404你自己的 Dockerfile 使用的伺服器沒有回退到 index.html。在 Caddy 中使用 try_files {path} /index.html,或者使用自動生成的建置。
頁面空白,瀏覽器控制台顯示資源 404建置的基礎路徑不是 /。檢查 vite.config 中的 base 或 package.json 中的 homepage。
VITE_* 的值是 undefined它只設定在 變數 分頁,不會傳入建置。把它設為建置參數後重新部署;使用自己的 Dockerfile 時,還要用 ARG 宣告。

與 Zeabur 無關聯。