代码 Pinia 4.0 只做「技术上破坏性」变更:纯 ESM、删 CJS,devtools-api 要单独装

2026-09-18 21:06:57

Pinia 4.0 发布:ESM only、@vue/devtools-api v8 与错误诊断重构

Pinia 4.0.0 于 2026-07-14 发布,之后跟进 4.0.1、4.0.2 两个补丁版本;配套包同步发布:@pinia/testing@2.0.0@pinia/nuxt@1.0.0,4.0.2 对应 @pinia/testing@2.0.1

这一版只包含技术层面的破坏性变更:ESM only,以及升级 @vue/devtools-api——它现在必须和 pinia 一起安装。另外对错误与开发警告做了一次大重构,改用 Nostics,让检测到的问题更容易修,无论对人还是对 agent。

  • 仓库:https://github.com/vuejs/pinia
  • v4.0.0 release:https://github.com/vuejs/pinia/releases/tag/v4.0.0
  • 变更对比 v3.0.4...v4.0.2:https://github.com/vuejs/pinia/compare/v3.0.4...v4.0.2

Features

  • 升级 devtools-api 到 v8(@posva,25572)
  • 使用 nostics 改善错误信息(@posva,f3522)
  • storeToRefs 中优雅跳过 nullish 值(@JSap0914,@posva,#3134)
  • storeToRefs 的非法属性做诊断(@posva,e7313)
  • 对插件中的错误值做诊断(@posva,29835)
  • 导出 piniaSymbol(@cexoso,#2973)

Bug Fixes(部分)

  • 使用现代的 Object.hasOwn
  • shouldHydrate 中对非 plain object 尊重 skipHydrate 标记(#3126)
  • 修复同一 callback 被订阅两次(@JSap0914,#3144)
  • ci: 固定 pnpm 到 10.7.0 以匹配 action-setup bootstrap
  • devtools: 让 settable getters 正常工作

破坏性变更与构建提交

build: esm only(Eduardo San Martin Morote, 2026-02-02)
  BREAKING CHANGE: 移除对 CJS 的支持(issues/3099)
build: drop CJS support, up minimal TS version(2026-02-02)
refactor: mark as type: module
release: pinia@4.0.0 @pinia/testing@2.0.0 @pinia/nuxt@1.0.0(2026-07-14)
release: pinia@4.0.1
release: pinia@4.0.2 @pinia/testing@2.0.1

一句话概括:包改成纯 ESM,不再产出 CJS 入口;最低 TypeScript 版本要求被提高。

变更文件

  • 删除:packages/pinia/api-extractor.json
  • 删除:packages/pinia/index.cjs
  • 修改:packages/pinia/package.json
  • 新增:packages/pinia/src/diagnostics.ts
  • 新增:packages/pinia/tsdown.config.ts(替换原 tsup.config.ts

版本支持状态

版本支持
4.0.x
3.0.x
2.2.x❌ LTS(issues/3099)
<2.2.0

升级检查清单

  1. CJS 引用改 ESMindex.cjs 已删除,require('pinia') 一类的引用需要改为 ESM import,构建工具链也要能产出/消费 ESM。

  2. 补装 devtools-api:devtools-api 升到 v8 后不再是隐式依赖,需要与 pinia 一起安装。

    npm i pinia @vue/devtools-api
    
  3. 检查 TypeScript 版本:最低 TS 版本已被提高,低于要求的版本需要先升级 TS。

  4. 确认 package.json 的模块类型:包已标记 type: module,混用 CJS 配置的项目需要一并调整。

复制全文 生成海报 Vue Pinia 前端 ESM 升级

推荐文章

程序员茄子在线接单