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 版本无关,切换版本后配置依然生效
各配置项在版本切换时的行为
特别注意:使用
npm install -g安装的全局包在不同 Node 版本间不共享,切换版本后需重新安装。
五、npm cache 目录空间管理
缓存空间参考数据
缓存增长原因
所有下载过的包都会被缓存
不同版本分别缓存(如
lodash@4.17.20和4.17.21同时保留)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 # 限制为 1GBCI/CD 环境:可使用
npm install --no-cache禁用缓存
npm 9/10 改进
较新版本的 npm 引入了更好的缓存管理机制,会自动限制缓存大小,不会无限增长。
六、npm prefix(全局包)目录空间管理
prefix 目录结构
text
/your/prefix/
├── bin/ # 全局命令
├── lib/
│ └── node_modules/ # 全局包源码
└── etc/ # 配置文件空间参考
管理命令
bash
# 查看已安装的全局包
npm list -g --depth=0
# 删除不需要的全局包
npm uninstall -g <包名>最佳实践
✅ 全局只装工具类:
yarn、pm2、nodemon、typescript等❌ 不要全局安装框架/库:
express、react、vue等应装在项目本地💡 临时使用工具优先用
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环境变量
八、核心结论
一句话总结
设置 registry 加速下载,自定义 cache 目录便于管理,定期清理 cache 控制磁盘占用,prefix 保持精简即可。