Skip to content
2026-10-17BUILD SYSTEM约 8 分钟阅读

FASTER FEEDBACK LOOP

包管理器基线追平 pnpm 12 主线:peer 解析提速、lockfile 确定性生成、供应链信任策略覆盖钉定工具链本身。

  • pnpm
  • pnpm 12
  • packageManager
  • lockfile
  • packageManagerDependencies
  • Vite
  • React
  • Vue

2026-10-17 ​

更新概览 ​

  • React SPA 模板:packageManager 钉定 pnpm 11.20.0 → 12.14.0,全部门禁通过。
  • Vue 3 SPA 模板:同上,pnpm 12.14.0,全部门禁通过。
  • React SSR 模板:同上,pnpm 12.14.0,全部门禁通过(含生产构建 + hydration E2E)。
  • Vue 3 SSR 模板:同上,pnpm 12.14.0,全部门禁通过。
  • Spring Boot 后端模板:本次无依赖变化(Maven 体系,与 pnpm 无关)。
  • 本次验证:四套前端 typecheck / lint / test / coverage / 组件测试守卫 / build / Playwright E2E(4×7 项)全部通过;cwa-stack CLI 模板映射与只读命令核对通过。

React SPA 模板 (vite_react_init) ​

依赖版本变更 ​

依赖旧版本新版本类型影响说明
packageManager (pnpm)11.20.012.14.0toolchain包管理器钉定升级,sha512 完整性随钉定更新

升级内容说明 ​

仅升级包管理器钉定,依赖树零变化(pnpm install 输出 Already up to date)。pnpm 12 的三个行为变化对本模板的影响:

  1. lockfile 结构变化:pnpm 12 将 packageManager 钉定的 pnpm 本身作为 packageManagerDependencies 记录进锁文件新首段(含 42 个平台 @pnpm/exe 变体,用于钉定工具链的可复现安装)。原锁文件内容整体顺延为第二个 YAML 文档,逐字节保留(已对比验证)。CI 中 pnpm/action-setup@v4 未显式指定版本、自动读取 packageManager 字段,无需改动。
  2. peer 解析提速:pnpm 12 重写 peer 依赖解析(官方数据 2–3 倍提速),锁文件成为依赖图的纯函数,重复安装产出字节级一致的锁文件。
  3. sha512 完整性核对:12.14.0 的钉定哈希经 npm pack 下载 tarball 实算 sha512 与 registry integrity 双向核对一致。

模板影响 ​

README 徽标与技术栈、AGENTS.md 基线行同步 pnpm 12.14.0。E2E 3/3 通过。

Vue 3 SPA 模板 (vite_vue3_init) ​

依赖版本变更 ​

依赖旧版本新版本类型影响说明
packageManager (pnpm)11.20.012.14.0toolchain包管理器钉定升级

升级内容说明 ​

与 React SPA 相同:依赖树零变化,锁文件新增 packageManagerDependencies 首段、原内容顺延保留。README 包管理器基线行、AGENTS.md 基线行同步。

模板影响 ​

E2E 3/3 通过。

React SSR 模板 (vite_react_ssr_init) ​

依赖版本变更 ​

依赖旧版本新版本类型影响说明
packageManager (pnpm)11.20.012.14.0toolchain包管理器钉定升级

升级内容说明 ​

同上。SSR 关注点不变:Server Component 默认、"use client" 边界、特权请求留在 src/server,升级不触及任何源码。生产构建(Next 静态/动态路由混合渲染)与 hydration E2E 均通过。

模板影响 ​

README 徽标与依赖清单、AGENTS.md pnpm 指引同步。E2E 4/4 通过。

Vue 3 SSR 模板 (vite_vue3_ssr_init) ​

依赖版本变更 ​

依赖旧版本新版本类型影响说明
packageManager (pnpm)11.20.012.14.0toolchain包管理器钉定升级

升级内容说明 ​

同上。Nuxt/Nitro/Vue SSR/Pinia 源码零变化;.client 插件与 import.meta.client 保护边界不受影响。生产构建 + 服务端启动 + 首屏 + hydration E2E 通过。

模板影响 ​

README 徽标与依赖清单、AGENTS.md pnpm 指引同步。E2E 4/4 通过。

Spring Boot 后端模板 (springboot-template) ​

本次无依赖变化。 Maven 体系模板,不使用 pnpm;Spring Boot parent、springdoc、archunit、Docker 基础镜像、Maven Wrapper 均维持既有版本。

文档与锁文件 ​

  • 四套前端 pnpm-lock.yaml:首段新增 packageManagerDependencies(pnpm 12.14.0 及其 42 个平台二进制变体条目),原 importers/packages/settings 段落逐字节保留为第二文档;lockfileVersion 保持 '9.0',无格式迁移。
  • 四套前端 README(徽标/技术栈/包管理器基线)与 AGENTS.md(pnpm 版本指引)同步为 12.14.0。
  • Spring Boot:README/AGENTS/docs 无需变化。
  • cwa-stack(CLI):catalog.json 五个模板映射核对一致;模板内环境检查 pnpmMajor >= 11 对 pnpm 12 天然兼容,无需改动;模板依赖升级不触及 CLI 版本与发布。

验证结果 ​

模板typechecklinttestcoverage组件守卫buildE2E
React SPA✅✅43/43✅19 组件 ✅✅3/3 ✅
Vue 3 SPA✅✅32/32✅19 组件 ✅✅3/3 ✅
React SSR✅✅29/29✅13 组件 ✅✅4/4 ✅
Vue 3 SSR✅✅25/25✅27 组件 ✅✅4/4 ✅

覆盖率阈值未做任何下调。cwa-stack CLI:node bin/cwa-stack.js --version(1.0.1)与 list 正常。

注意事项 ​

  • pnpm 12 锁文件双文档结构:钉定 packageManager 后首次安装,锁文件会出现两个 YAML 文档——首段是钉定工具链自身的 packageManagerDependencies,次段是原有内容。这是 pnpm 12 的预期结构,不是锁文件损坏;回滚到 pnpm 11 安装即可还原为单文档。
  • CI 兼容性:pnpm/action-setup@v4 不带显式版本时自动读取 packageManager 字段,钉定升级后 CI 无需改动;若你的流水线显式传了 version: 参数,需要同步改为 12.14.0 或移除该参数。
  • 低版本 pnpm 用户提示:新锁文件为双文档 YAML,pnpm 11 及以下无法识别首段的 packageManagerDependencies(会忽略未知键,实际安装仍按次段解析),但钉定校验(Corepack/nvmd)会强制使用 12.14.0,建议使用者通过 npm i -g pnpm@12 或 Corepack 自动获取正确版本。

cwa-stack —— 开箱即用,极速响应,让开发更简单、更高效