本文档提供了 Node 版本管理器(NVM)的全面概述,NVM 是一种用于在单一系统上管理多个 Node.js 版本的工具。NVM 允许用户通过一组 shell 函数来安装、切换和管理不同的 Node.js 版本。本页面涵盖了 NVM 的高层架构、核心组件和关键流程。
有关详细的安装说明,请参阅 安装。有关特定的使用模式和命令,请参阅 使用。
NVM 是 Node.js 的一个版本管理器,旨在按用户安装并按 shell 调用。它适用于 Unix、macOS 和适用于 Linux 的 Windows 子系统(WSL)上的任何符合 POSIX 标准的 shell(sh、dash、ksh、zsh、bash)。
主要功能包括
.nvmrc 文件自动切换版本来源:README.md96-97 README.md73-75
NVM 具有以 shell 为中心的核心架构,它修改用户的 PATH 环境变量,而不是使用符号链接或全局安装。这使得它能够在不需要 root 权限的情况下运行。
来源:nvm.sh1-100 install.sh1-50 README.md96-120
NVM 由几个关键组件组成,它们协同工作以提供版本管理功能
定义所有 NVM 函数并提供核心功能的主脚本。它被用户 shell 配置文件加载,并使 nvm 命令可用。
主要功能包括
nvm_version() - 解析并返回版本标识符nvm_ensure_version_installed() - 验证版本是否已安装nvm_is_version_installed() - 检查特定版本是否已安装nvm_version_path() - 返回版本的安装路径nvm_process_nvmrc() - 处理 .nvmrc 文件以实现自动版本切换来源:nvm.sh1-15 nvm.sh171-185 nvm.sh508-628 nvm.sh738-766
下载和设置 NVM 的安装脚本。它配置用户 shell 配置文件以加载 nvm.sh 并设置 NVM 的目录结构。
主要功能包括
nvm_default_install_dir() - 确定默认安装目录nvm_detect_profile() - 检测用户的 shell 配置文件nvm_do_install() - 执行实际的安装过程nvm_install_node() - 如果指定,自动安装 Node.js 版本来源:install.sh23-32 install.sh278-317 install.sh369-480 install.sh206-224
来源:nvm.sh667-684 nvm.sh682-684 README.md392-395
当用户指定 Node.js 版本(通过显式版本、别名或 .nvmrc 文件)时,NVM 会通过一个明确定义的流程将其解析为特定版本。
来源:nvm.sh701-735 nvm.sh738-766 nvm.sh534-601
安装过程涉及下载和设置 NVM,然后配置 shell 环境以配合使用它。
来源:install.sh369-480 install.sh126-201 install.sh226-263 install.sh206-224
NVM 通过修改 PATH 环境变量来优先使用选定的 Node.js 版本,从而与用户的 shell 集成。这种方法允许在不进行全局更改的情况下无缝切换版本。
| 功能 | 实现 | 目的 |
|---|---|---|
| PATH 管理 | nvm_change_path() | 修改 PATH 以使用选定的 Node.js 版本 |
| 自动检测 | nvm_find_nvmrc() | 在当前或父目录中查找 .nvmrc 文件 |
| Shell Sourcing | 修改 shell 配置文件 | 在 shell 启动时加载 nvm.sh |
| 命令补全 | bash_completion | 为 NVM 命令提供 Tab 补全 |
| Shell 函数 | nvm 命令函数 | 将 NVM 功能暴露给 shell |
来源:nvm.sh981-1003 nvm.sh508-514 install.sh425-429
NVM 可通过环境变量和每个项目的配置文件组合进行配置。
环境变量
NVM_DIR - 设置 NVM 安装的位置NVM_COLORS - 自定义颜色输出NVM_NODEJS_ORG_MIRROR - 指定自定义 Node.js 镜像项目特定配置
.nvmrc 文件可以按项目指定 Node.js 版本来源: README.md115-119 README.md125-130 README.md445-451
当用户运行 nvm use [version] 时,将执行以下过程
nvm_version() 解析指定的版本nvm_is_version_installed() 检查版本是否已安装nvm_change_path() 修改 PATH,以优先使用选定的版本来源: nvm.sh738-766 nvm.sh171-185 nvm.sh981-1003
当用户导航到一个包含 .nvmrc 文件的目录时
nvm_find_nvmrc() 检测到 .nvmrc 文件nvm_process_nvmrc() 读取和处理该文件nvm_version() 解析指定的版本来源: nvm.sh508-514 nvm.sh534-601 nvm.sh602-628
NVM 提供了一种基于 shell 的 Node.js 版本管理方法,通过修改 PATH 而非符号链接或系统范围的更改来实现。这种设计使其能够在无需 root 权限的情况下运行,并可以按 shell 进行调用。该系统由 shell 脚本组成,这些脚本与用户的环境集成,以实现无缝的版本切换,并支持项目特定的配置和 LTS 版本。