Skip to content

pnpm

pnpm workspace 必须要固定版本

  • vite
  • typescript
  • eslint
  • rollup
  • @types/node

以 vite 为例

sh
# 查看 workspace 装了哪些版本
pnpm list vite
pnpm list vite --depth -1

# 为什么装
pnpm why vite
sh
# 版本整理
pnpm dedupe

frozen-lockfile

--frozen-lockfile 只能使用现有 pnpm-lock.yaml,不能修改 lockfile。

--no-frozen-lockfile 允许 pnpm 根据 package.json 更新 pnpm-lock.yaml。

--frozen-lockfile     严格安装,lockfile 不准变,CI 推荐
--no-frozen-lockfile  宽松安装,允许更新 lockfile,本地或临时救急

更新

sh
corepack enable

corepack use pnpm@10

Node 自动切换

  1. nvm 的 .nvmrc

  1. fnm 的 .nvmrc .node-version

  2. Volta

查看:package.json

{
  "volta": {
    "node": "22.17.0",
    "pnpm": "10.12.1"
  }
}
  1. asdf 的 .tool-versions

  2. mise(原 rtx) 的 .tool-versions mise.toml

  3. nodenv 的 .node-version

  4. package.json engines

不会主动切换 Node,但很多 IDE、CI、安装工具会根据它提醒或限制版本。

{
  "engines": {
    "node": ">=22"
  }
}
  1. packageManager

不会切换 Node。

例如:

{ "packageManager": "pnpm@10.12.1" }

只影响包管理器版本。

  1. direnv 的 .envrc

  2. VS Code 的 .vscode/settings.json

有些插件会调用:

  • nvm
  • fnm
  • Volta

导致终端打开后自动切换。