Files
market/skills/nodejs-runtime/references/nvm-fallback.md
yi-ge 1a50969b93 feat: 拆分 environment-setup 为 Python/Node.js 运行时双核心 + 父级路由
新增双核心 skill(深度集成 DesireCore Hatch/Volta + HTTP API + Socket.IO):
- python-runtime v1.0.1:Python 运行时管理
  · 四级降级:HTTP API → Hatch CLI 绝对路径 → 系统包管理器 → pyenv
  · references:hatch-desirecore / pyenv-fallback / virtualenv / troubleshooting
  · scripts/probe-python.sh:输出 JSON 快照供 Claude 解析决策
- nodejs-runtime v1.0.1:Node.js 运行时管理
  · 四级降级:HTTP API → Volta CLI → 系统包管理器/NodeSource → nvm/fnm
  · references:volta-desirecore / nvm-fallback / package-managers / troubleshooting
  · scripts/probe-node.sh:输出 JSON 快照(含 volta_tools / package_json_volta 等)

environment-setup → dev-environment-setup v2.0.1(重命名 + 重写为 router):
- 从 1380 行手册瘦身为 ~150 行索引
- 仅负责容器(Docker/Podman)/ WSL2 / 办公依赖速查 / 系统工具
- references/desirecore-runtime.md 沉淀 Hatch/Volta 路径表 + HTTP API 速查 +
  Socket.IO 事件契约,作为两个核心 skill 的共享底座
- references/decision-tree.md 定义四级降级决策树
- scripts/probe.sh + probe.ps1 系统级 JSON 探测

三个 SKILL.md 的 L0 改为场景驱动结构(何时使用 / 何时不要用 / 怎么做),
让 AI 凭名字与 L0 即可判断匹配场景。

注册更新:
- builtin-skills.json:新增 python-runtime / nodejs-runtime / dev-environment-setup
  (原 environment-setup 移除),按字母序,共 21 个 skill
- manifest.json:totalSkills 19→21,lastUpdated 2026-05-02

下游同步:
- docx / pdf / xlsx / pptx 中的环境引用从 environment-setup 拆分为
  python-runtime / nodejs-runtime / dev-environment-setup 三向指引

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-02 13:30:23 +08:00

3.0 KiB
Raw Blame History

nvm / fnmL4 社区方案)

仅在以下情况启用:

  1. 用户明确要求 nvm / fnm
  2. 项目根目录已有 .nvmrc 文件且不存在 package.json#volta
  3. L1 (HTTP API) / L2 (Volta CLI) / L3 (系统包管理器) 全部失败

如条件不满足,不要主动建议 nvm——优先 DesireCore Volta。

nvmPOSIX shell

安装

# macOS / Linux
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash

source ~/.zshrc   # 或 ~/.bashrc

# 验证
command -v nvm    # 应返回 "nvm"(函数)

install.sh 会自动追加加载片段到 ~/.zshrc / ~/.bashrc

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"

使用

# 列出可装 LTS
nvm ls-remote --lts

# 安装
nvm install 22       # 最新 22.x
nvm install --lts    # 最新 LTS
nvm install 20.10.0  # 精确版本

# 切换
nvm use 22
nvm use --lts

# 默认
nvm alias default 22

# 项目级(.nvmrc
echo "22" > .nvmrc
nvm use   # 读取 .nvmrc

# 已装
nvm ls

# 卸载
nvm uninstall 18

Windowsnvm-windows独立项目

https://github.com/coreybutler/nvm-windows/releases

下载安装包安装,重启终端。命令略有差异(无 .nvmrc 支持,需用 nvm-windows-bridge 之类的扩展)。

fnmRust 实现,比 nvm 快)

安装

# macOS
brew install fnm

# Linux
curl -fsSL https://fnm.vercel.app/install | bash

# Windows
winget install Schniz.fnm

配置自动切换

# zsh
echo 'eval "$(fnm env --use-on-cd --shell zsh)"' >> ~/.zshrc

# bash
echo 'eval "$(fnm env --use-on-cd --shell bash)"' >> ~/.bashrc

# fish
fnm env --use-on-cd --shell fish | source

--use-on-cdcd 进入有 .nvmrc 的目录时自动切换。

使用

fnm install 22
fnm install --lts
fnm use 22
fnm default 22
fnm ls
fnm uninstall 18

.nvmrc / .node-version 约定

文件 工具支持
.nvmrc nvm、fnm默认
.node-version fnm默认、nodenv
package.json#engines.node npm 安装时校验,不切换
package.json#volta Volta自动切换

存在 package.json#volta优先尊重它,不要让用户改用 nvm。

镜像加速

# nvm
export NVM_NODEJS_ORG_MIRROR=https://npmmirror.com/mirrors/node/

# fnm
fnm install --node-dist-mirror https://npmmirror.com/mirrors/node/ 22
# 或全局
export FNM_NODE_DIST_MIRROR=https://npmmirror.com/mirrors/node/

故障排查

现象 排查
nvm: command not found shell 未 source nvm.sh重启终端或 source ~/.zshrc
nvm 在脚本里失效 nvm 是 shell function 不是命令;脚本里需先 source ~/.nvm/nvm.sh
node: command not foundnvm 已装) 切换了 shell 但 nvm 没在新 shell 加载,添加加载片段
nvm 编译 Node 时网络超时 设镜像 NVM_NODEJS_ORG_MIRROR
Windows nvm 切换无效 以管理员重新运行 nvm 安装包