pnpm
pnpm workspace 必须要固定版本
- vite
- typescript
- eslint
- rollup
- @types/node
以 vite 为例
sh
# 查看 workspace 装了哪些版本
pnpm list vite
pnpm list vite --depth -1
# 为什么装
pnpm why vitesh
# 版本整理
pnpm dedupefrozen-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@10Node 自动切换
- nvm 的
.nvmrc
⸻
fnm 的
.nvmrc.node-versionVolta
查看:package.json
{
"volta": {
"node": "22.17.0",
"pnpm": "10.12.1"
}
}asdf 的
.tool-versionsmise(原 rtx) 的
.tool-versionsmise.tomlnodenv 的
.node-versionpackage.json
engines
不会主动切换 Node,但很多 IDE、CI、安装工具会根据它提醒或限制版本。
{
"engines": {
"node": ">=22"
}
}- packageManager
不会切换 Node。
例如:
{ "packageManager": "pnpm@10.12.1" }
只影响包管理器版本。
direnv 的
.envrcVS Code 的
.vscode/settings.json
有些插件会调用:
- nvm
- fnm
- Volta
导致终端打开后自动切换。
