面试指南

部署到 Vercel

当前 Fumadocs 文档站最省事、最稳妥的上线方案

这个仓库当前最适合直接部署到 Vercel。

原因很简单:

  • 这是一个标准的 Next.js + Fumadocs 项目。
  • 当前仓库已经可以直接通过 pnpm build 完成生产构建。
  • 项目里存在动态服务端能力,例如 app/api/search/route.tsproxy.ts,这类能力更适合直接托管在 Vercel。

前置条件

开始前,建议先确认下面几项:

  • 代码已经提交到 Git 仓库。
  • 仓库已经同步到 GitHub、GitLab 或 Bitbucket 之一。
  • 本地至少执行过一次 pnpm build,确认项目可以正常构建。
  • 你已经有可登录的 Vercel 账号。

如果只是想快速上线,这个仓库通常不需要额外的 vercel.json

操作步骤

1. 推送代码到 Git 平台

Vercel 最省事的接入方式,是直接导入 Git 仓库。

如果你还没有远端仓库,先把当前项目推送到 GitHub 或其他受支持平台。

2. 在 Vercel 导入仓库

进入 Vercel 控制台,点击 Add New -> Project,然后选择你的 Git 仓库。

根据 Vercel 官方文档,导入现有项目时,Vercel 会自动识别受支持框架,并自动填充推荐的构建配置。当前仓库是 Next.js 项目,通常不需要手动调整框架类型。

3. 确认构建配置

对于这个仓库,通常保持默认即可。如果你想手动核对,可以参考下面这组值:

  • Framework Preset: Next.js
  • Install Command: pnpm install
  • Build Command: pnpm build
  • Output Directory: 留空,使用 Next.js 默认产物

当前仓库第一版可以直接部署,但如果你准备正式对外使用,建议同时补齐站点 URL 配置。

推荐环境变量:

  • NEXT_PUBLIC_SITE_URL
    • 填你的正式域名,例如 https://interview.example.com
    • 如果没有自定义域名,也可以先填 https://fuma-interview.vercel.app

当前代码会优先读取:

  1. NEXT_PUBLIC_SITE_URL
  2. SITE_URL
  3. VERCEL_PROJECT_PRODUCTION_URL
  4. VERCEL_URL

这样做的目的,是让 metadataBase、Open Graph 和 Twitter 卡片在生产环境下生成正确的绝对地址。

4. 等待首次部署完成

首次部署成功后,Vercel 会分配一个 *.vercel.app 域名。

这时建议至少检查:

  • 首页是否能正常打开
  • /docs 是否能正常访问
  • 文档搜索是否可用
  • 文档详情页是否能正常跳转
  • 页面源码里的 Open Graph / Twitter 绝对地址是否已经指向正确域名

5. 绑定自定义域名

如果你有自己的域名,可以在项目的 Settings -> Domains 中添加。

Vercel 官方文档给出的流程是:进入项目设置、添加域名、按提示配置 DNS,完成后等待解析生效即可。

只有自己可见,怎么做?

如果你的目标是“站点只能自己看”,结论要分平台说。

Vercel

Vercel 支持 Deployment Protection。

根据 Vercel 官方当前文档:

  • Vercel Authentication 可在所有套餐使用。
  • Hobby 套餐下,Standard Protection 只能保护预览部署和部署 URL,生产域名仍然公开可访问。
  • 如果要把生产域名也一起保护起来,需要更高等级的保护能力,当前文档写的是 ProEnterprise 才能做到 All Deployments

所以如果你只是想先临时保护预览环境,Vercel 可以做;如果你要“正式站点完全私有”,要看你是否愿意升级到支持保护生产域名的方案。

GitHub Pages

如果你的意思是个人文档站“只能自己访问”,GitHub Pages 不适合作为首选。

GitHub 官方当前文档说明:

  • GitHub Pages 确实支持把站点发布为 private。
  • 但这个能力要求“组织仓库 + GitHub Enterprise Cloud”。
  • 私有发布站点只能被对仓库有读取权限的人访问。

这意味着:对个人账号上的普通 github.io 用法来说,不能把站点做成“只有自己可见”的私有个人文档站。

为什么当前仓库不建议直接上 GitHub Pages

不是 GitHub Pages 完全不能用,而是这个仓库现在不是纯静态站。

当前仓库里至少有这两类能力会卡住静态托管:

  • app/api/search/route.ts
  • proxy.ts

Next.js 官方静态导出文档当前明确列出的不支持项里,包括:

  • 依赖传入 Request 的 Route Handlers
  • Rewrites
  • Proxy

结合当前代码结构,可以合理推断:

  • 如果想部署到 GitHub Pages,需要先把项目改造成静态导出模式。
  • 文档搜索不能继续依赖当前这套动态搜索路由。
  • proxy.ts 这类基于请求改写的能力也需要移除或改写。

所以对这个仓库来说,当前阶段最稳妥的路线仍然是先上 Vercel。

官方参考

On this page