构建与部署
本地构建、静态导出验证,以及 Cloudflare Pages 上线步骤。
本站是独立的 Next.js + Fumadocs 应用,产物为纯静态文件,不依赖 Node 运行时服务器。
本地开发
在仓库根目录进入 site/:
cd site
pnpm install
pnpm dev开发服务器默认在 http://localhost:3000。修改 content/docs/ 下的 MDX 后会热更新。
静态构建
cd site
pnpm buildnext.config.mjs 已开启 output: 'export',构建结果写入 site/out/。产物特点:
- 每个页面都有对应的
.html与同名.txt(纯文本,便于 AI agent 抓取) - 全文搜索索引在
out/api/search/,浏览器端计算,无需服务端 - 可直接丢到任意静态托管(Cloudflare Pages、Nginx、GitHub Pages 等)
本地预览导出结果:
# 任意静态服务器即可,例如:
npx serve site/outCloudflare Pages 构建时必须设置环境变量 NODE_VERSION=22。Fumadocs 要求 Node ≥ 22,而 Pages 默认 Node 版本偏低,不设会直接构建失败。
上线到 Cloudflare Pages
目标域名:docs.163366.xyz。
在 Cloudflare Pages 中新建项目,连接 GitHub 仓库 Mutx163/mikcb。
配置构建:
| 项 | 值 |
|---|---|
| 构建命令 | cd site && pnpm i && pnpm build |
| 输出目录 | site/out |
环境变量 NODE_VERSION | 22 |
仓库根不是 Node 项目,因此命令里必须先 cd site。
部署完成后,在 Pages 项目的自定义域中添加 docs.163366.xyz,按提示完成 DNS。
之后主分支上对 site/ 的推送会自动触发重新构建与发布。
维护本站时的已知坑
改这个站之前建议先读一遍,都是实际踩过的:
-
fumadocs-mdx15 生成的.source/没有index.ts
从@/.source/server导入,不要写@/.source。 -
MDX 里的裸
<会被当成 JSX 标签
例如版本区间>=3.12.2 <4.0.0,<4.0.0要用反引号包住,或改写为<。 -
Step/Steps不在默认 MDX 组件里
已在根目录mdx-components.tsx手动注册;新增同类组件时同样要挂进去。 -
pnpm 11 默认不跑依赖的构建脚本
esbuild等需要构建产物的包,已在pnpm-workspace.yaml的allowBuilds中放行。新增需要 postinstall 的依赖时同步更新该文件。 -
.source/、.next/、out/不要提交
已由site/.gitignore排除;out/由 Cloudflare 在构建机上生成。