Skip to content

fix: update.sh 环境检查兼容所有 Node 版本管理器#1

Open
sundevilyang wants to merge 1 commit into
MiaoDX:mainfrom
sundevilyang:fix/update-sh-manager-agnostic
Open

fix: update.sh 环境检查兼容所有 Node 版本管理器#1
sundevilyang wants to merge 1 commit into
MiaoDX:mainfrom
sundevilyang:fix/update-sh-manager-agnostic

Conversation

@sundevilyang

Copy link
Copy Markdown

问题

scripts/update.sh 的环境预检硬编码只认 nvm,使用 mise、asdf、volta、fnm 等管理器的用户无法通过检查,即使工具链完整可用。

改动

  • scripts/lib/ensure-clean-env.sh:重写环境检查逻辑
    • 新增 _detect_node_manager():通过 node 路径自动检测 nvm / mise / asdf / volta / fnm
    • 新增 _check_binary():只检查二进制是否存在及 PATH 是否重复,不限制来源
    • 新增 _manager_hint():根据检测到的管理器生成对应的安装/升级提示
    • nvm 专属检查(NVM_DIR、default alias)移入 if manager = "nvm" 分支,仅对 nvm 用户生效
    • 新增重复二进制检测(如同时存在 homebrew 和 npm 版本的 codex)

行为变化

场景 旧版 新版
使用 mise 管理 Node 阻塞 通过
使用 asdf/volta/fnm 阻塞 通过
nvm default alias 无效 所有用户阻塞 仅 nvm 用户
PATH 中有重复二进制 不检查 阻塞(新增)
nvm 用户行为 不变 不变

测试

  • mise 环境:ensure_clean_env 通过,update.sh 全流程成功
  • 重复 codex(homebrew + npm):正确检测并报错

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant