用途:把 nrwl/ 下的 CNW 模板仓库(如 empty-template、react-template 等)统一升级到一个目标 nx 版本,验证仍能构建与脚手架生成,然后为每个仓库开一个草稿 PR。
主要能力:不假设仓库已在本地检出,会自行克隆所需仓库;支持指定单个、多个或默认全部模板;可复用已存在的干净克隆;在 Polygraph 会话中可把目标模板仓库加入会话,使各 PR 关联;附带 run-all-templates.sh,用 create-nx-workspace --template nrwl/<repo> 对每个模板做端到端脚手架检查。
使用方式:先确认目标版本存在(npm view nx@<version> version),并检查仓库是否存活(GET https://api.github.com/repos/nrwl/<name>-template/commits/main 返回 200)。随后克隆到默认工作目录 ./tmp/cnw-templates/,确保工作树干净并重置到 origin/main。迁移步骤:CI=true npm install;CI=true npx nx migrate <target-version>;CI=true npm install;若存在 migrations.json 则 CI=true npx nx migrate --run-migrations 并删除该文件。验证:NX_NO_CLOUD=true NX_DAEMON=false CI=true npx nx run-many -t build test lint typecheck --skip-nx-cache,以及 npx nx run-many -t e2e(仓库定义时)。失败则回滚该仓库并报告,不开红 PR。提交时每个仓库保持单次提交,分支名 update-nx-<target-version>,提交信息为 chore(deps): update to nx <target-version>,通过 GitHub API 创建草稿 PR,PR 正文写明旧到新版本、运行的迁移与验证结果。合并后可用 CNW_VERSION=<target-version> ./run-all-templates.sh 做后续检查,也可用 ONLY="empty-template react-template" 限定子集。
适用场景:需要批量同步多个 CNW 模板到同一 nx 版本、并保证模板仍可被用户脚手架生成时。
限制:模板仓库的 ci.yml 不覆盖 --template 从 main 脚手架的消费路径,且对 main 强推会跳过 PR CI,因此必须自行验证;run-all-templates.sh 看不到未推送分支,只能作为合并后步骤;未创建的仓库(404)跳过推送并报告为 not created;所有 nx/npm 命令需 CI=true 避免交互阻塞;未经确认不得推送,PR 一律先开草稿;补丁升级通常只改 package.json 与锁文件,次版本/主版本可能改写源码,提交前需审查非依赖差异。具体模板清单可能变化,以用户指定为准。