找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

51

积分

0

好友

6

主题
发表于 2025-10-16 23:39:31 | 查看: 28| 回复: 0
nvm-logo-color.png

你是否遇到过这样的场景:老项目需要 Node 14,新项目要求 Node 18,来回切换版本要重装 Node?或者团队成员因为 Node 版本不一致,导致项目跑不起来?

NVM (Node Version Manager) 用一个纯 Shell 脚本就能解决这些问题。


NVM 是什么

NVM 是 Node.js 版本管理工具,核心代码只有一个 nvm.sh 文件。不需要编译,不依赖第三方库,通过修改环境变量实现多版本共存和快速切换。

主要功能:

  • 安装和切换任意 Node.js 版本
  • 每个终端窗口独立管理版本
  • 支持 .nvmrc 文件自动切换
  • 兼容 macOS、Linux、WSL

安装使用

安装方法

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash

安装后重启终端,或执行:

source ~/.bashrc  # 或 ~/.zshrc

常用命令

# 安装最新 LTS 版本
nvm install --lts

# 安装指定版本
nvm install 18.17.0

# 切换版本
nvm use 16

# 查看已安装版本
nvm list

# 设置默认版本
nvm alias default 18

实际应用场景

多项目版本管理

在项目根目录创建 .nvmrc 文件:

18.17.0

进入项目目录时执行:

nvm use
# 输出:Found '.nvmrc' with version <18.17.0>
# Now using node v18.17.0

版本升级迁移全局包

# 安装新版本并迁移旧版本的全局包
nvm install 20 --reinstall-packages-from=18

CI/CD 集成示例

# GitHub Actions 配置
- name: Setup Node
  run: |
    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
    export NVM_DIR="$HOME/.nvm"
    [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
    nvm install

工作原理

NVM 的实现方式:

  1. 版本存储:所有 Node 版本安装在 ~/.nvm/versions/node/ 目录
  2. PATH 劫持:修改 $PATH 环境变量,将选定版本的路径前置
  3. Shell 函数nvm 是一个 Shell 函数,每次调用在当前 Shell 环境生效

这种设计使得不同终端窗口可以使用不同的 Node 版本,互不干扰。


常见问题解决

国内下载慢的解决办法

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

在脚本中使用 NVM

#!/bin/bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
nvm use 18
node -v

与其他工具的对比

  • NVM:纯 Shell,功能全面,社区活跃
  • n:需要 Node 环境,更轻量
  • fnm:Rust 编写,速度快

团队协作建议

  1. 统一版本:在项目中添加 .nvmrc 文件
  2. 文档说明:在 README 中注明 Node 版本要求
  3. 配合 engines:在 package.json 中声明:
    {
    "engines": {
    "node": ">=18.0.0"
    }
    }

总结

NVM 用简单的方式解决了版本管理的核心问题。它的源码只有几千行 Shell 脚本,却被全球数百万开发者使用。

如果你还在为 Node 版本切换烦恼,可以试试 NVM。


关注《云栈大前端》,获取更多前端工程化工具和开源项目解析。


📦 项目地址
GitHub: https://github.com/nvm-sh/nvm


标签:#NVM #Github #Node.js版本管理 #前端工程化 #开发工具 #Shell脚本 #多版本切换

您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|云栈社区(YunPan.Plus) ( 苏ICP备2022046150号-2 )

GMT+8, 2025-11-5 21:40 , Processed in 0.098718 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 CloudStack.

快速回复 返回顶部 返回列表