用途
modernise-apps 是一个 DHIS2 官方 AI 开发工具技能,用于帮助开发者将已有的 DHIS2 应用更新到现代化配置。所谓「现代化」目前涵盖五个相互独立的任务,一个应用可能只需要其中任意组合,也可能一个都不需要。该技能会先确认这是否为现有 DHIS2 应用,再判断哪些任务适用。
主要能力
技能涵盖的五项现代化任务如下:
- 从 Yarn 迁移到 pnpm:@dhis2/cli-app-scripts 自 12.7.0 起支持 pnpm。此任务还包含 README 更新——添加 pnpm 徽章、从 App Hub(apps.dhis2.org)拉取应用描述(若已发布),并将脚手架冗长的 “Available Scripts” 部分精简为简洁的 “Get Started”。
- 从 @dhis2/cli-style 迁移到 @dhis2/config-*:始终迁移 config-eslint/config-prettier,并根据应用原有配置迁移 config-stylelint/config-lslint,改用原生 eslint/prettier/stylelint/ls-lint 以及原生 husky/lint-staged。
- 升级平台库:@dhis2/ui、@dhis2/app-runtime、@dhis2/d2-i18n,默认不发生破坏性变更。@dhis2/multi-calendar-dates 与 @js-temporal/polyfill 的升级属于另一项独立的行为性迁移,由 multi-calendar-dates-upgrade 技能处理。
- 现代化 CI 流水线:用 dhis2/workflows-platform 的共享可复用工作流替换定制的 GitHub Actions 工作流,并升级过时的 action 或 Node 版本。
- 配置到 App Hub 的持续交付:将应用接入 dhis2/workflows-platform 的 release.yml,使发布在每次向默认分支推送符合约定的提交时自动发布到 apps.dhis2.org。
使用方式
技能首先通过检查来判断应用状态:d2.config.js 是否存在、@dhis2/cli-app-scripts 是否在 package.json 中、yarn.lock/pnpm-lock.yaml 的情况、是否使用 @dhis2/cli-style、平台库版本、CI 工作流内容,以及是否已配置 App Hub CD。然后按场景读取对应的参考文档:
- 从 yarn 迁移到 pnpm:references/pnpm-migration.md
- 刷新已迁移应用的 README:references/pnpm-migration.md(Step 8)
- 对已迁移应用做渲染检查(可选):references/pnpm-migration.md(Step 11)
- 迁移 lint/format 配置:references/style-configs-migration.md
- 升级平台库:references/platform-library-bumps.md(Step 1)
- 现代化 CI:references/ci-migration.md
- 配置 App Hub CD:references/apphub-release.md
适用场景
适用于需要将已有 DHIS2 应用升级到 pnpm、迁移样式/代码检查配置、升级平台依赖、现代化 CI 或配置自动发布到 App Hub 的开发者。若应用尚未创建(不是 DHIS2 应用),该技能不适用,可参考 dhis2-apps 技能进行脚手架搭建。
限制与规则
技能规定若干原则:在 pnpm import 成功前绝不删除 yarn.lock;迁移前始终将 @dhis2/cli-app-scripts 升级到 >=12.7.0;迁移后必须安装并构建/测试,修复所有解析错误;dhis2/workflows-platform 的可复用工作流引用不可互换,需按应用的 pnpm 与 cli-style 状态选择;Step 11 的端到端检查是可选且需用户主动请求,不应默认运行;迁移 cli-style 时只迁移应用实际配置过的工具;@dhis2/cli-style 应最后移除;平台库升级默认采用非破坏性版本,若跨越主版本需询问用户;匹配 App Hub 列表时应以 d2.config.js 的 id 优先;App Hub CD 设置应在缺失时主动提供而非未经请求就添加。具体版本号、命令与更细步骤以参考资料为准,本文未提供的细节暂未提供。