迁移到 0.1#

0.1.0 是尚未发布的兼容性调整版本。先在分支中安装预览 tarball,再按以下步骤验证。

  1. 构建环境升级到 Node 22.12+ 或 24 LTS。React/React DOM 使用配对的 18.3.1 或 19.2.8;Router DOM 升到 7.18.3。参照 React Router 官方升级指南,先在原应用启用适用的 v7 future flags 并验证 splat 相对导航等行为;本插件不替应用完成 Router 迁移。
  2. React、React DOM、Router DOM、Loadable 现在是 peer 依赖,需要应用显式安装。使用 TypeScript 的应用安装对应 React 类型和 @types/loadable__component;原来依赖包内传递运行时依赖的项目必须调整。
  3. 默认不再假定 @ 已映射到 src。需要别名时显式设置 alias: { name: '@', basename: 'src' },并让构建工具和 TypeScript 同时识别它。生成文件包含本机路径,建议忽略,不提交或跨机器复用。
  4. 默认生成 src/routes-type.ts。纳入应用 tsconfig 的 include;首次独立类型检查前先执行一次构建。可用 typeGenerateOptions: undefined 关闭声明生成。CJS NodeNext 项目需按自身模块模式生成/保存 .cts 声明;生成的路由 TSX 面向 Bundler 解析。
  5. 使用 useNavigation().push('/users/:id', { id: '42' }) 获得路由约束。直接 useNavigate() 沿用 React Router 类型。现在遗漏必需参数会产生编译错误。
  6. 保留必需的根 layout.tsx。移除同目录下重复的 page.tsx / page.jsx;消除 (group)、动态参数名或大小写导致的等价终端路由;(id) 与 [id] 等目录产生相同 route id 时也会报错。静态路由与动态路由的正常优先级仍由 Router 决定。
  7. 生成代码和类型文件不能是同一个文件、符号链接,或位于扫描目录内。扫描跳过符号链接、隐藏目录和 node_modules。依赖这些路径的项目需改成真实目录。
  8. 数据模块使用 export function loader(...) 和可选 export function action(...);page.loader.ts 使用默认导出。单独 loader.ts、*.config.ts 配置合并和自动 loader 返回类型生成均未实现,不应依赖文档中曾描述但不存在的行为。

多个 loader 并存时会并行执行,普通对象按 data → clientData → loader 顺序合并;返回的 Response 会原样传递,抛出的错误向 Router 传播。它不是服务端执行边界,数据模块会进入客户端构建,不能放入密钥或服务端专用代码。

结构变更会触发重新生成,Vite 可能完整刷新。组件编辑仍由应用的 React HMR 配置处理,不承诺保留状态。本版本提供独立的 examples/minimal-react;旧大型示例不属于当前兼容矩阵。