部署到 Vercel
当前 Fumadocs 文档站最省事、最稳妥的上线方案
这个仓库当前最适合直接部署到 Vercel。
原因很简单:
- 这是一个标准的
Next.js + Fumadocs项目。 - 当前仓库已经可以直接通过
pnpm build完成生产构建。 - 项目里存在动态服务端能力,例如
app/api/search/route.ts和proxy.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
- 填你的正式域名,例如
当前代码会优先读取:
NEXT_PUBLIC_SITE_URLSITE_URLVERCEL_PROJECT_PRODUCTION_URLVERCEL_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,生产域名仍然公开可访问。 - 如果要把生产域名也一起保护起来,需要更高等级的保护能力,当前文档写的是
Pro或Enterprise才能做到All Deployments。
所以如果你只是想先临时保护预览环境,Vercel 可以做;如果你要“正式站点完全私有”,要看你是否愿意升级到支持保护生产域名的方案。
GitHub Pages
如果你的意思是个人文档站“只能自己访问”,GitHub Pages 不适合作为首选。
GitHub 官方当前文档说明:
- GitHub Pages 确实支持把站点发布为 private。
- 但这个能力要求“组织仓库 + GitHub Enterprise Cloud”。
- 私有发布站点只能被对仓库有读取权限的人访问。
这意味着:对个人账号上的普通 github.io 用法来说,不能把站点做成“只有自己可见”的私有个人文档站。
为什么当前仓库不建议直接上 GitHub Pages
不是 GitHub Pages 完全不能用,而是这个仓库现在不是纯静态站。
当前仓库里至少有这两类能力会卡住静态托管:
app/api/search/route.tsproxy.ts
Next.js 官方静态导出文档当前明确列出的不支持项里,包括:
- 依赖传入
Request的 Route Handlers - Rewrites
- Proxy
结合当前代码结构,可以合理推断:
- 如果想部署到 GitHub Pages,需要先把项目改造成静态导出模式。
- 文档搜索不能继续依赖当前这套动态搜索路由。
proxy.ts这类基于请求改写的能力也需要移除或改写。
所以对这个仓库来说,当前阶段最稳妥的路线仍然是先上 Vercel。