PAYATHON 2026

Vite+ 使用 vite 别名时,如何消除 pnpm 的 peer dependency 版本警告?

数据阿明

可以通过 peerDependencyRules.allowAny 放宽对 vite 的 peer dependency 版本检查,消除题目中的警告。配置前需要确认所用插件与当前 Vite+ 版本兼容,因为这项配置不会验证运行时兼容性。

为什么会出现 found 0.1.12?

配置中的:

"vite": "npm:@voidzero-dev/vite-plus-core@latest"

让依赖名 vite 指向另一个包。根据题目日志,实际解析到的包版本是 0.1.12。别名保留了 vite 这个引用名称,但目标包的版本号不会因此变成上游 Vite 的版本号。

pnpm 将 0.1.12 与插件声明的 ^5.2.0 || ^6 || ^7 || ^8 比较后,报告版本不满足要求。这符合版本范围检查规则,单凭警告无法判断插件实际能否运行。

按现有 package.json 配置消除警告

针对题目使用的 pnpm 10.32.1,在已有的 pnpm 对象中加入 peerDependencyRules,保留原来的 overrides:

{
  "pnpm": {
    "overrides": {
      "vite": "npm:@voidzero-dev/vite-plus-core@latest",
      "vitest": "npm:@voidzero-dev/vite-plus-test@latest"
    },
    "peerDependencyRules": {
      "allowAny": ["vite"]
    }
  }
}

这是需要合并进 package.json 的配置片段,不要用它替换整个文件。Vite+ 项目仓库的相关问答也给出了这项配置。

保存后重新执行:

vp install

该规则针对 peer dependency 名称 vite,因此同时覆盖日志中 @tailwindcss/vite 和 @voidzero-dev/vite-plus-test 对 vite 的版本要求,无需把 vitest 加入 allowAny。

如果项目已统一使用根目录的 pnpm-workspace.yaml 管理这些设置,也可以将以下配置合并到该文件中:

peerDependencyRules:
  allowAny:
    - vite

选择与项目现有配置一致的写法即可。

只允许当前已确认的版本

allowAny 会放宽所有包对 vite 的 peer 版本要求。如果只想处理日志中的两个依赖,可以用更具体的 allowedVersions 替换前面的 peerDependencyRules:

{
  "peerDependencyRules": {
    "allowedVersions": {
      "@tailwindcss/vite@4.2.2>vite": "0.1.12",
      "@voidzero-dev/vite-plus-test@0.1.12>vite": "0.1.12"
    }
  }
}

使用 package.json 时,这段配置仍放在 pnpm 对象内。它仅为指定依赖允许 vite 解析为 0.1.12;升级相关包后,需要重新确认并调整规则。allowAny 和按依赖限定的 allowedVersions 均见 pnpm 10 配置文档。

消警后还需要检查什么?

运行项目已有的开发和构建命令,确认插件加载正常、Tailwind CSS 样式能够生成。警告消失只表示版本规则被放宽,不能作为兼容性验证结果。

日志显示已经找到了 vite,因此用于处理缺失依赖的 ignoreMissing 不适用。strictPeerDependencies: false 控制依赖问题是否导致命令失败,也不会消除这类警告,参见 pnpm 配置说明。

备注:内容仅供参考。