Mix Space 官方文档站(https://mx-space.js.org)。Astro 7 + Fumadocs 16 输出纯静态站点到 dist/,由 GitHub Pages 托管(main push 自动部署,deploy.yml 注入 CNAME)。
Node ≥ 22.12(CI 用 24),包管理器 pnpm 11。
pnpm install && pnpm dev # 本地开发
pnpm build && pnpm preview # 构建并预览产物
pnpm check # astro check
pnpm lint # eslint
pnpm pangu # 中英空格(CI 门禁)
node scripts/check-links.mjs # 站内死链(CI 门禁,必须在 build 之后)CI 门禁共 4 个 step:pnpm build → pnpm check → check-links → pnpm pangu。pnpm lint 存在但未接进 CI,只能本地跑。提交前把上面 6 条都过一遍。
Astro 7.3 · Fumadocs 16.15 · React 19 · Tailwind 4(@tailwindcss/vite,无 config 文件)· Node 22+。
这些是 astro.config.mjs / 布局里刻意做的决定,改之前先读那里的注释:
- 内容目录不搬迁。 仍在仓库根的
content/docs/(src/content.config.ts的base: './content/docs',注意是相对项目根而非src)。往src/挪会静默丢内容。 markdown.processor: unified()不能删。 Astro 7 默认走自研 Sätteri 管线,不显式声明就会静默忽略全部 fumadocs remark/rehype 插件(代码高亮、heading id、steps 都会坏,构建仍然成功)。- fumadocs 的
card/accordion用vite.resolve.alias重定向到src/components/*.tsx兼容层,不能改回resolveId插件。 dev 下 Vite 依赖预构建会把 specifier 打进.vite/deps,绕过resolveId,原版 Card 会崩。 rollupOptions.onwarn的过滤是有判别力的,别放宽。 它只吞MODULE_LEVEL_DIRECTIVE+astroPropagatedAssets这一组合(53 个 MDX = 53 条,来源是 Astro 源码里的字面量,无法关闭)。放宽会让「构建零警告」这条验收失去意义。- 不要用
@astrojs/sitemap。 它只产sitemap-index.xml+sitemap-0.xml,会让旧站的/sitemap.xml消失。端点是手写的src/pages/sitemap.xml.ts。 scripts/check-links.mjs的KNOWN_PREEXISTING_DEAD是分类清单,不是白名单。 当前 5 条登记、实际触发 2 条。确认新死链在旧站同样 404 后才可登记,且必须附旧站证据。- 深色模式是 class 驱动的(
<html class="dark">,产物 CSS 是.dark\:xxx:where(.dark,.dark *))。base.astro里的防闪脚本必须在astro:before-swap阶段把主题写进newDocument,否则 Astro 交换 DOM 时会剥掉class导致客户端导航闪一下日间。
main=5c1c017,CI 全绿、已部署并线上验证。- 2 条迁移前既有死链在清单内,非回归。
pnpm check剩 1 条 hint(scripts/check-links.mjs:71未使用参数),非阻塞,已知未修。scripts/verify-migration.mjs依赖 Next 时代的out/目录,该目录已随迁移删除,脚本目前跑不通。- 全站内容以
mx-space/core源码为准核对过(核对基线:tagv14.15.2之后 9 个提交的 master,commitdef0803)。修改产品相关描述前先更新D:/AI/Mx/_research/core(浅克隆,git pull --ff-only即可)。已按源码修正的项:API 前缀为/api/v3(app.config.ts的API_VERSION = 3)、部署文档的 pm2 配置与产物入口、webhook 事件名为点号形式、后台导航为「设置 → 分组 → 分区」三级结构(依据configs.dsl.util.ts的groupConfigs)、加密字段由field.password()自动注入。