| 123456789101112131415161718192021222324252627282930 |
- import { printBuildComplete } from './build/buildReport';
- import type { Config } from '@react-router/dev/config';
- /**
- * React Router v7 framework 模式配置。
- *
- * - appDirectory: 源码根目录,routes.ts / root.tsx / entry.client.tsx 均位于此。
- * - ssr: false —— 纯静态预渲染(SPA + prerender),不部署常驻 Node 服务,对 CF 加速零影响。
- * 注意:ssr:false 仅关闭「运行时」服务端渲染;构建时仍会在 Node 端预渲染 root 及 prerender 列表中的路由,
- * 因此路由代码必须 SSR 安全(不能在渲染期直接访问 window 等浏览器 API)。
- * - prerender: 预渲染的静态路径列表。多语言采用路径前缀(/en/...),当前仅启用 en-US,
- * 将来启用其它语言时把对应 /xx/... 路径追加进来即可。未列出的路径由 SPA fallback 承载。
- */
- export default {
- appDirectory: 'src',
- // 输出目录改为 dist(默认是 build,会与项目里存放自研 Vite 插件的 build/ 目录冲突并被清空)。
- // 产物结构:dist/client(静态站点,含预渲染 HTML 与资源)、dist/server(构建期预渲染用,ssr:false 时运行时不部署)。
- buildDirectory: 'dist',
- ssr: false,
- async prerender() {
- return ['/en/home', '/en/privacy', '/en/terms-of-service'];
- },
- // SSG 构建收尾。buildEnd 晚于 client/ssr 双环境构建、prerender、删除 server 目录等全部步骤,
- // 是整个 react-router build 的最后一个钩子,「🎉 恭喜打包完成」在此打印才真正是最后一行。
- // 体积统计客户端产物目录 dist/client(此时 dist/server 已因 ssr:false 被删)。
- async buildEnd({ reactRouterConfig }) {
- await printBuildComplete(`${reactRouterConfig.buildDirectory}/client`);
- },
- } satisfies Config;
|