Ai时代解决js包管理更曲折了
ai最擅长的就是瞎分析, 能带着你狂奔
症状
- 升级了pnpm10.12.1之后, vscode插件项目无法正常运行, install, compile, run, 等等统统不正常
ai的猜测
- pnpm版本问题, 实话说他的版本确实有问题.
- 之前移动过一个几百兆的项目, 可能动了pnpm的库, 因为pnpm用的是链接.
- 建议换npm/yarn, 试了一下, 这两个确实都还正常.
- 降了pnpm版本到10.11.1, 问题依旧. 当然可能是降的版本不够多.
- 但是, 实际原因是, 父目录有pnpm的各种设置和库, pnpm没有识别子目录为项目目录. 解决就很简单了.
- 全局安装各种yo相关
- 删掉父目录的库, 改掉习惯使用本地库的’臭’毛病
- 结论:
- ai有病. 他一般基于瞎猜而不是逐步排查.
- pnpm也有病. 父目录有个库, 子目录就不能是独立项目了, 他觉得自己是git呢.
事件中使用的各种手段还是有用的, 这里做个罗列, 其中某些完全不靠谱的操作就没放进来.
- 0608操作
# 查看当前版本
pnpm --version
# 本地安装
npm ls -g pnpm
# 查看brew安装历史
brew list --versions pnpm
which pnpm
ls -la $(which pnpm)
# 查看自更新历史
history | grep "pnpm self-update"
# 卸载当前版本
npm uninstall -g pnpm
brew uninstall pnpm # 如果用 brew 安装过
# 查看可用版本
npm view pnpm versions | tail -20
npm view pnpm dist-tags
npm view pnpm versions | grep "10\." | tail -10
npm view pnpm time
# 安装特定版本(比如 8.x)
npm install -g pnpm@8
# 只能这么操作
rm -rf /Users/bergman/Library/pnpm
echo $PATH | grep pnpm
# 如果上面有内容那么就要去.zshrc找
code ~/.zshrc
# 删完了验证
which pnpm
pnpm --version # 应该提示 command not found
# 安装用brew更安全
brew install pnpm
# 然后可以pnpm
pnpm add -g yo generator-code @vscode/vsce typescript ts-node nodemon
这两个都是空
ls -la | grep yarn
cat event/package.json | grep packageManager
咱们定位下问题, 不要着急掩盖问题. 我把act开给你, 你帮我定位问题, 注意不是让你install, 你不要install来掩盖问题, 你帮我搞明白为啥pnpm说yarn是包管理工具.
- 0609操作, 要解决pnpm把项目识别为yarn项目, 然后拒绝install问题, 好神奇, 这个目录包括父目录从未yarn过.
# 当初安装yarn
corepack enable
# 昨天
npm install -g generator-code # 做过了. 然后yarn没有问题, 但是, pnpm安装之后. yo code
# zsh: command not found: yo
# yarn全局目录
yarn global dir
yarn config get global-folder
yarn cache dir
yarn config get cache-folder
- 检查是否有 `.yarnrc` 或 `.yarnrc.yml` 文件指向了您的 vsce 目录
- 查看全局 yarn 配置:`yarn config list`
echo $YARN_CACHE_FOLDER
echo $YARN_GLOBAL_FOLDER
yarn global list
corepack --version
which yarn # 看是否是 corepack 管理的
pnpm store path
npm config get cache
npm list -g --depth=0
pnpm list -g --depth=0
ls -la /opt/homebrew/bin/yarn
lrwxr-xr-x 1 bergman admin 61 6 9 00:43 /opt/homebrew/bin/yarn -> ../Cellar/node/23.11.0/lib/node_modules/corepack/dist/yarn.js
➜ ~
corepack导致的, 他检测到有包管理器混乱的状态, 就纠正为yarn管理,
注意, 这是claude说的, 真不见得对.
但是, 累了, 就这样吧
- 0609第二部分操作: 解决了yarn配置, pnpm依旧拒绝操作:
pnpm store prune
pnpm install --verbose --no-frozen-lockfile
Done in 341ms using pnpm v10.11.1
pwd
ls -la
pnpm list
pnpm why typescript # 测试某个依赖
pnpm install --ignore-workspace --verbose
问题就是父目录有pnpm的内容, 所以pnpm识别父目录才是项目目录, 因此, 删除父目录的相应配置内容, 万事大吉了.
- 0609第三部分操作, 尝试全局approve esbuild, 然而木得操作
# 查看当前项目的批准状态
pnpm config list
# 查看全局批准状态
pnpm config list --global
# 检查 .npmrc 文件
cat ~/.npmrc
cat ./.npmrc
pnpm approve-builds --global
There are no packages awaiting approval
➜ esb git:(main) ✗ pnpm approve-builds
? Choose which packages to build (Press <space> to select, <a> to toggle all, <i> to invert selection) …
❯ ○ esbuild
结论: 很悲伤, esbuild不能全局批准, 必须每个项目批准