本文档解释了 NVM 如何与不同的 shell 环境集成,并通过修改环境变量来实现 Node.js 版本管理。它涵盖了 NVM 如何检测 shell 配置文件,管理 PATH 和环境变量,提供命令补全,以及处理 .nvmrc 文件。有关项目特定版本配置的信息,请参阅 项目特定配置 (.nvmrc)。有关 NVM 命令的常规用法,请参阅 基本命令。
NVM 主要是一个 shell 工具,它通过修改 shell 环境来使用特定的 Node.js 版本。当 NVM 被 sourcing 时,它以几种方式与 shell 集成:
.bashrc、.zshrc 等).nvmrc 文件以自动切换版本安装 NVM 时,它需要检测要修改的适当 shell 配置文件。这对于在每次打开新 shell 时都能使用 NVM 至关重要。
nvm_detect_profile 函数实现了此逻辑,以查找要修改的适当 shell 配置文件。它首先检查 $PROFILE 环境变量,然后使用 $SHELL 变量确定 shell 类型,最后回退检查常见的配置文件。
来源:test/install_script/nvm_detect_profile1-149
NVM 的核心机制之一是 PATH 管理。NVM 通过将选定的 Node.js 版本 bin 目录添加到 PATH 的开头来工作,以确保使用选定的版本。
当您运行 nvm use <version> 时,NVM 会修改您的 PATH 以优先使用选定 Node.js 版本的 bin 目录。当 NVM 被 sourcing 时,PATH 也会根据以下因素自动更新:
.nvmrc 文件(如果存在)来源:test/sourcing/Sourcing nvm.sh should use the default if available and no nvm node is loaded1-28 test/sourcing/Sourcing nvm.sh should keep version if one is active1-21
NVM 使用和设置了几个环境变量来控制其行为和维护状态。
| 可变 | 目的 | 默认值 |
|---|---|---|
NVM_DIR | NVM 安装的目录 | $HOME/.nvm |
NVM_SYMLINK_CURRENT | 如果设置,则创建到当前版本的符号链接 | 未设置 |
NVM_RC_VERSION | 来自 .nvmrc 的缓存版本 | 动态设置 |
NVM_BIN | 活动 Node.js bin 目录的路径 | 动态设置 |
NVM_INC | 活动 Node.js include 目录的路径 | 动态设置 |
PATH | 已修改,包含活动 Node.js 版本 | 现有的 PATH |
MANPATH | 已修改,包含活动 Node.js man page | 现有的 MANPATH |
ZDOTDIR | zsh 配置的自定义目录 | 未设置 |
当 NVM 加载时,它会根据活动的 Node.js 版本设置环境变量。这确保了依赖这些环境变量的工具(如构建系统)能够正确找到 Node.js 和 npm。
来源:test/install_script/nvm_check_global_modules1-66 test/install_script/nvm_detect_profile1-149
NVM 为 bash 和 zsh shell 提供了命令补全,以便更轻松地使用 NVM 命令和发现可用的 Node.js 版本。
命令补全系统在 bash_completion 文件中实现。对于 zsh 用户,NVM 会加载 bashcompinit 以提供 bash 兼容的补全。补全系统为以下内容提供建议:
use、install、which)default、stable)NVM 可以自动检测并使用 .nvmrc 文件中指定的 Node.js 版本,这使得项目特定的 Node.js 版本配置成为可能。
当使用带有 --install 标志 sourcing NVM 时,或在使用 NVM 进行自动检测时,NVM 会在当前目录中查找 .nvmrc 文件并使用指定的版本。
来源:test/sourcing/Sourcing nvm.sh with --install and .nvmrc should install it1-34 test/sourcing/Sourcing nvm.sh with --install should install the default1-38
NVM 可与不同的 shell 协同工作,其中一些功能针对特定的 shell 环境进行了定制。
| Shell | 特殊功能 | 配置文件 |
|---|---|---|
| Bash | 原生命令补全 | .bashrc, .bash_profile |
| Zsh | 使用 bashcompinit 进行补全 | .zshrc, .zprofile |
| 其他 | 无补全的基本功能 | .profile |
对于 zsh 用户,NVM 会遵循 ZDOTDIR 环境变量来查找适当的 zsh 配置文件,这在自定义环境中特别有用。
来源:test/install_script/nvm_profile_is_bash_or_zsh1-15 bash_completion86-97
安装 NVM 时,它会修改您的 shell 配置文件,以便在打开新 shell 时自动加载 NVM。
安装过程会在您的 shell 配置文件中添加以下行,用于:
nvm.sh)来源:test/install_script/nvm_reset1-39 test/install_script/nvm_do_install1-19
在与 shell 环境集成时,NVM 会采取安全措施:
NVM 的 shell 集成是其功能的核心,它能够直接从 shell 进行无缝的版本切换和管理。通过检测 shell 配置文件、管理 PATH 变量、提供命令补全以及支持项目特定配置,NVM 为 Node.js 开发创造了流畅的工作流程。
有关将 NVM 与不同 Node.js 版本一起使用的更多信息,请参阅 版本管理。有关 NVM 命令的详细用法,请参考 基本命令。
刷新此 Wiki
最后索引时间2025年4月17日(99352a)