键盘快捷键

按 ← 或 → 切换章节

按 S 或 / 搜索本书

按 ? 显示快捷键帮助

按 Esc 关闭帮助

文档与网站

网站沿用 cjv 的组织方式:web/ 是 landing 页,docs/user-guide/ 和 docs/dev-guide/ 分别维护用户手册与开发指南。每本书的 src/ 为中文,en/ 为英文。

landing 页使用 React、TypeScript 和 Vite。安装方式切换由 Radix Tabs 处理,翻译通过 react-i18next 提供。构建时由 React 预渲染双语 HTML,浏览器通过 hydration 接管交互。字体随站点打包,文档由 mdBook 生成。

本地开发

需要 Node.js 22.22.2+、24.15+ 或 26+,以及 npm 和 mdBook 0.5.4。建议使用当前 Node.js LTS。

cd web
npm ci
npm run dev

前端源码按职责组织:

路径职责
src/App.tsx页面组合
src/components/导航、安装方式、下载与文档入口、命令复制
src/config.ts发行资产和安装命令
src/i18n/翻译类型、语言检测和实例初始化
src/locales/中英文翻译资源
scripts/版本读取、React 预渲染、mdBook 构建与导航

npm run typecheck 执行严格 TypeScript 检查;npm run lint 和 npm run format 分别检查和整理代码。npm run test:unit 运行 Vitest 与 Testing Library 交互测试。

单独预览中文手册:

mdbook serve docs/user-guide

构建完整站点

cd web
npm run build
npm run preview

构建输出位于根目录 dist/,包含首页和四本书:

dist/
  index.html
  zh-CN/index.html
  en/index.html
  assets/
  book/user-guide/zh-CN/
  book/user-guide/en/
  book/dev-guide/zh-CN/
  book/dev-guide/en/

默认部署在域名根路径。在子路径部署时,例如 GitHub Pages 的 /cjr/,设置 SITE_BASE=/cjr/ 后构建。首页链接和静态资源将使用同一前缀。

部署时上传整个 dist/。node_modules/、dist/、.edgeone/ 和 mdBook 的 book/ 输出保留在本地忽略目录中。

修改文档时同步更新两种语言和各自的 SUMMARY.md。安装说明和下载按钮应指向已发布的安装脚本或二进制。

语言与版本

首页文案位于 web/src/locales/zh-CN.json 和 en.json,由 i18next 处理。显式语言 URL 优先,其次是旧链接的 ?lang=、已保存的选择和浏览器语言。其他语言回退到英文。

构建时使用与浏览器相同的 React 组件生成 /zh-CN/ 和 /en/ 的完整 HTML,下载和文档链接由静态 HTML 提供。每种语言独立初始化翻译实例,hydration 使用对应页面的语言。根路径按语言偏好跳转到相应语言页。页面标题、搜索摘要、无障碍标签和复制提示均使用翻译资源。下载版本从 Cargo.toml 读取,与二进制保持一致。

两种语言的文档使用相同章节文件名。构建过程为每章添加语言链接,切换时保留章节、移除各语言特有的标题锚点;首页链接保持所选语言。中文文档工具栏翻译位于 web/src/locales/book-zh-CN.json。

npm test 依次执行 Biome 检查、组件交互测试、TypeScript 检查、完整站点构建和产物测试。测试覆盖 tab 键盘操作、复制成功与失败反馈、双语 hydration、语言优先级、下载链接和章节切换。新增文案必须同时补齐两种语言,缺少翻译键会使构建失败。可以用 SITE_BASE=/cjr/ npm test 验证子路径部署。CI 和生产部署使用同一套命令。

生产部署

官网为 cjr.zxilly.com,托管在 EdgeOne Makers。项目 cjr-web 使用腾讯云中国站账户,部署区域为全球(含中国大陆)。

.github/workflows/website.yml 在 master 的网站、文档、版本或部署工作流变更后自动构建、测试并上传完整站点,也支持手动触发。发布工作流在 Release 正式发布后调用它,更新网站的版本和下载链接。生产部署串行执行,每次上传完成后再开始下一次部署。

GitHub 仓库配置:

类型名称内容
VariableEDGEONE_PROJECT_NAMEcjr-web
SecretEDGEONE_API_TOKEN中国站 Makers API Token

在 Makers 中绑定生产域名 cjr.zxilly.com,再按控制台提供的目标地址配置 Cloudflare CNAME,使用 DNS only。证书由 Makers 管理。DNS 和域名绑定配置一次后持续沿用。

手动部署已构建的站点:

npx --yes edgeone@1.6.47 login --site china --token "$EDGEONE_API_TOKEN"
npx --yes edgeone@1.6.47 makers deploy ./dist \
  --name cjr-web --area global --env production --skip-ai-gateway-sync

部署记录见 GitHub Actions。需要回退时,在 Makers 的部署列表中选择先前成功的生产部署。