跳到正文

静态网站 ​

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 无关联。