| name | modernjs-migrate-to-v3 |
| description | 将一个 Modern.js 2.0 应用迁移到 3.0,优先做可安全自动化的依赖/配置/入口/import 改写,剩余复杂项收敛为人工清单。在「升级 Modern.js 大版本、modern.config 报废弃、要从 webpack/pages 迁到 Rspack/routes、自定义 server 报错」时使用。 |
Migrate Modern.js 2.0 to 3.0
本 skill 用于单个 Modern.js 应用的 v2→v3 迁移。目标:完成可安全改写的部分,剩余风险收敛成明确人工清单。规则与示例以仓库 guides/upgrade/* 的真实文档为准。
使用原则
- 调用方先确定
projectDir,所有修改仅限 projectDir
- 不在开始时读取全部
references/;仅在命中人工项时按需加载
- 每个成功步骤结束后提交一次(见
references/commit-changes.md)
输出要求
- 进度简短:
[X/6] 开始/完成/跳过/失败
- 非阻断问题记录后继续;阻断问题立即停止并说明步骤、原因、恢复方式
前置检查
git -C <projectDir> status --porcelain
工作区非空时停止,提示先 git commit/git stash。建议在干净分支或 worktree 上迁移,便于回滚。
执行步骤
步骤 1:扫描项目,生成迁移上下文
node scripts/scan-project.mjs <projectDir>
产出 <projectDir>/.agents/runs/modernjs-migrate/context.json:判定 v2/v3、Node 版本、入口类型、命中的 features 与 v2Signals。脚本失败(非 v2/v3、Node 过低)时直接停止并展示原因。migrationState=v3 按续迁移处理。
monorepo / workspace 项目:@modern-js/app-tools 用 workspace:* / link: / catalog: 等协议时无法从版本号判定大版本。此时只有命中v2-only 结构信号(顶层 runtime、appTools({ bundler })、applyBaseConfig、@modern-js/plugin-tailwindcss、@modern-js/runtime/bff|server import、、、自定义 )才判为 v2;(非 0 退出、不写 context),避免把已是 v3 的 workspace 应用误迁。 / / 不算 v2 信号(v3 也有)。