登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
资讯
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
业界
›
Nvm切换Node版本同时自动切换Npm、Yarn、Pnpm的缓存地址 ...
Nvm切换Node版本同时自动切换Npm、Yarn、Pnpm的缓存地址
[ 复制链接 ]
步雪卉
4 天前
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
我们使用
Nvm
,在切换
Node
版本时,包管理工具(
Npm
、
Yarn
、
Pnpm
)的缓存地址并不会因为
Node
版本的改变而改变,
这就导致了可能因为
Node
版本与依赖包不兼容而导致的项目运行问题。以下
Shell
脚本(本地系统:MacOs 26.2 (25C56) 修改的
~/.zshrc
文件)
可以实现在执行 “
nvm use XXX
” 时,自动为每个版本的
Node
切换独立的缓存地址。
一、修改文件:~/.zshrc:
# 启用 Zsh 的钩子功能
autoload -U add-zsh-hook
# 统一函数:根据 Node.js 版本设置各包管理器的缓存路径
function sync_package_manager_cache {
# 获取当前 Node 版本(去掉 'v' 前缀)
local node_version=$(node -v 2>/dev/null | sed 's/^v//')
if [ -n "$node_version" ]; then
# 1. 设置 pnpm 存储路径
local pnpm_store_path="$HOME/.pnpm-store/v3/node-$node_version"
mkdir -p "$pnpm_store_path"
pnpm config set store-dir "$pnpm_store_path" --global > /dev/null 2>&1
# 2. 设置 npm 缓存路径
local npm_cache_path="$HOME/.npm_cache/node-$node_version"
mkdir -p "$npm_cache_path"
# 通过环境变量设置(优先级最高)
export npm_config_cache="$npm_cache_path"
# 同时写入全局配置
npm config set cache "$npm_cache_path" --global 2>/dev/null
# 3. 设置 yarn (v1) 缓存路径
local yarn_cache_path="$HOME/.yarn_cache/node-$node_version"
mkdir -p "$yarn_cache_path"
# 通过环境变量设置
export YARN_CACHE_FOLDER="$yarn_cache_path"
# 如果 yarn 已安装,也写入其全局配置
if command -v yarn &> /dev/null; then
yarn config set cache-folder "$yarn_cache_path" --global 2>/dev/null
fi
# 可选:切换时显示提示(需要提示时可取消注释下一行)
# echo "缓存目录已切换至 Node.js $node_version 对应路径"
fi
}
# 将函数添加到 precmd 钩子,在每次显示命令提示符前执行
add-zsh-hook precmd sync_package_manager_cache
# Shell 启动时立即执行一次,确保初始状态正确
sync_package_manager_cache
复制代码
二、 修改保存文件以后执行生效:
source ~/.zshrc
复制代码
三、验证是否生效:
nvm use 22
echo "Node版本: $(node -v)"
echo "npm缓存: $(npm config get cache)"
echo "yarn缓存: $(yarn cache dir 2>/dev/null || echo 'yarn未安装')"
echo "pnpm存储: $(pnpm store path)"
nvm use 24
echo "Node版本: $(node -v)"
echo "npm缓存: $(npm config get cache)"
echo "yarn缓存: $(yarn cache dir 2>/dev/null)"
echo "pnpm存储: $(pnpm store path)"
复制代码
执行结果:
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
切换
Nvm
Node
版本
同时
相关帖子
.Net中WebApiController如何实现多版本兼容?
nvm 是什么?
【GitHub每日速递 20251203】Node版本管理神器nvm:跨平台安装、多版本切换全攻略
详解Flask3.x版本下两大类型内存马
2025年 Safari 和 iOS版本检测新思路
Karmada v1.16 版本发布!支持多模板工作负载调度
升级curl版本,及升级后引起的动态库链接不正常问题的解决
MySQL 8.4.7版本下载&安装详细教程(Win11环境)
MySQL 5.7.*版本修改字符集(Win11环境)
Rime-AI v2版本发布
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
业界
.Net中WebApiController如何实现多版本兼容?
2
634
孜尊
2025-11-27
安全
nvm 是什么?
2
457
喝岖
2025-11-27
安全
【GitHub每日速递 20251203】Node版本管理神器nvm:跨平台安装、多版本切换全攻略
1
912
舒菀菀
2025-12-03
业界
详解Flask3.x版本下两大类型内存马
6
1019
鞠彗云
2025-12-03
业界
2025年 Safari 和 iOS版本检测新思路
1
229
陆菊
2025-12-10
业界
Karmada v1.16 版本发布!支持多模板工作负载调度
0
598
士沌
2025-12-16
安全
升级curl版本,及升级后引起的动态库链接不正常问题的解决
2
593
赫连如冰
2025-12-20
业界
MySQL 8.4.7版本下载&安装详细教程(Win11环境)
0
19
俞秋荣
2025-12-28
安全
MySQL 5.7.*版本修改字符集(Win11环境)
0
342
祺簇
2025-12-29
业界
Rime-AI v2版本发布
0
714
宓碧莹
2025-12-30
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
签约作者
程序园优秀签约作者
发帖
步雪卉
4 天前
关注
0
粉丝关注
21
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
3934307807
991124
anyue1937
9994891
kk14977
6845358
4
xiangqian
638210
5
韶又彤
9994
6
宋子
9978
7
闰咄阅
9993
8
刎唇
9993
9
俞瑛瑶
9998
10
蓬森莉
9947
查看更多
今日好文热榜
190
如何编写figma插件
804
2026年北京陪诊机构排行
833
Ruoyi框架 | 扩展部门数据权限实现
244
2025再见,码农当自强,47岁尚能饭否
164
在 Web 前端实现流式 TTS 播放
186
2025年终总结——在奔跑中前行
136
吴恩达深度学习课程四:计算机视觉 第四周
231
一个关于时间、节奏和前端动画的小实验:新
301
实用程序:解放双手!Python 打造 PDF 手写
217
Perigon.CLI 10.0 重磅发布【AspNetCore开
206
MongoDB 详解、应用场景及案例分析(AI)
390
RL 策略优化 (4.2章节)
64
0基础转行产品经理:墨刀还是Axure?从背景
621
springboot~传统WEB应用开启CSRF
54
BI报表及可视化分析类工具使用经验总结(下
313
ComfyUI Docker 镜像部署指南
267
国内直连GPT、Claude和Gemini?N8N这次更新
479
2026 年 PHP 开发者进阶 快速高效开发学习
534
TryHackMe-SOC-Section 5:网络钓鱼分析
49
【踩坑】Roslyn 5与VS2022——不散的红色浪