Nvm 及 Node 环境配置

一、nvm 国内源设置

问题背景

使用 nvm install 下载 Node.js 速度慢,通常是因为默认源在国外。

Windows 系统

在终端执行:

bash

nvm node_mirror https://npmmirror.com/mirrors/node/
nvm npm_mirror https://npmmirror.com/mirrors/npm/

macOS / Linux 系统

编辑 shell 配置文件(~/.bashrc~/.zshrc 等),添加:

bash

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

执行 source ~/.bashrc(或对应文件名)使其生效。

备选镜像

清华大学镜像源:https://mirrors.tuna.tsinghua.edu.cn/nodejs-release/


二、npm 镜像源设置

设置 npm 包下载源为国内镜像,加速 npm install

bash

npm config set registry https://registry.npmmirror.com

三、自定义 npm cache 目录

设置方法

bash

npm config set cache "F:\Env\Nvm\node_cache"   # Windows 示例
npm config set prefix "D:\nvm\node_global"     # 全局包安装目录(可选)

验证

bash

npm config get cache
npm config get prefix

路径注意事项

  • Windows 路径可用反斜杠 \ 或正斜杠 /

  • 路径中包含空格时需用引号包裹


四、配置持久性与版本切换

npm config 的性质

  • npm config set 设置的是用户级配置,保存在 ~/.npmrc 文件中

  • 与 Node 版本无关,切换版本后配置依然生效

各配置项在版本切换时的行为

配置项

切换版本后是否共享

registry(下载源)

✅ 共享

cache(缓存目录)

✅ 共享

prefix(全局安装目录)

❌ 由 nvm 管理,每个版本独立

全局安装的包(-g

❌ 跟随各自版本

特别注意:使用 npm install -g 安装的全局包在不同 Node 版本间不共享,切换版本后需重新安装。


五、npm cache 目录空间管理

缓存空间参考数据

场景

缓存大小

新项目

~0 MB

1 个中型项目(50 个依赖)

200-500 MB

日常工作(3-5 个项目)

1-3 GB

长期未清理

5-20+ GB

缓存增长原因

  1. 所有下载过的包都会被缓存

  2. 不同版本分别缓存(如 lodash@4.17.204.17.21 同时保留)

  3. npm 不会自动删除旧版本缓存

查看缓存大小

bash

# Linux/macOS/Git Bash
du -sh ~/.npm

# Windows PowerShell
Get-ChildItem -Path ~\.npm -Recurse | Measure-Object -Property Length -Sum

清理缓存

bash

# 清理所有缓存
npm cache clean --force

# 查看当前缓存大小
npm cache verify   # 同时会显示缓存统计信息

管理建议

  • 推荐清理周期:每 1-3 个月检查并清理一次

  • 设置缓存上限(npm 7+):

    bash

    npm config set cache-max 1024   # 限制为 1GB
  • CI/CD 环境:可使用 npm install --no-cache 禁用缓存

npm 9/10 改进

较新版本的 npm 引入了更好的缓存管理机制,会自动限制缓存大小,不会无限增长。


六、npm prefix(全局包)目录空间管理

prefix 目录结构

text

/your/prefix/
├── bin/          # 全局命令
├── lib/
│   └── node_modules/   # 全局包源码
└── etc/          # 配置文件

空间参考

场景

大小

2-3 个常用全局包

< 50 MB

5-10 个全局包

100-300 MB

大量全局包

500 MB - 2 GB

管理命令

bash

# 查看已安装的全局包
npm list -g --depth=0

# 删除不需要的全局包
npm uninstall -g <包名>

最佳实践

  • ✅ 全局只装工具类:yarnpm2nodemontypescript

  • ❌ 不要全局安装框架/库:expressreactvue 等应装在项目本地

  • 💡 临时使用工具优先用 npx,避免全局安装


七、高级方案:按 Node 版本隔离 cache/prefix

npm 本身不支持在 cache/prefix 路径中使用动态版本变量,但可通过 shell 函数实现自动化:

Shell 函数方案(~/.bashrc 或 ~/.zshrc)

bash

nvm() {
    command nvm "$@"
    if [[ "$1" == "use" ]]; then
        local current_version=$(node -v | sed 's/v//')
        npm config set cache "$HOME/.npm_cache/$current_version"
        npm config set prefix "$HOME/.npm_global/$current_version"
        echo "✅ npm cache 已设置为: $HOME/.npm_cache/$current_version"
    fi
}

使用效果

bash

nvm use 18   # 自动将 cache 切换为 ~/.npm_cache/18.20.0/
nvm use 16   # 自动切换为 ~/.npm_cache/16.20.0/

注意事项

  • 按版本隔离后,每个版本的全局包需要分别安装

  • 需要确保自定义 prefix 的 bin/ 目录已加入 PATH 环境变量


八、核心结论

目录/配置

是否容易变大

管理策略

cache

✅ 很容易(几GB)

每季度清理一次

prefix

❌ 通常不大(几百MB)

只装必要的全局工具

registry

不占空间

设置一次即可

全局包(-g

跟随 prefix

按需安装,定期清理

一句话总结

设置 registry 加速下载,自定义 cache 目录便于管理,定期清理 cache 控制磁盘占用,prefix 保持精简即可。



Nvm 及 Node 环境配置
https://halo.demox.asia/archives/node-and-nvm-env
作者
你的降灵
发布于
2026年09月05日
许可协议