每次切项目都要改 Node 版本?macOS 自动化读取.nvmrc,解放双手!

最近开发项目比较多, 有最新的技术 vite7+react9, 也有很老的技术webpack3+vite2, 这个老项目需要用node12, 我新项目用的node24, 都会想着用nvm做版本管理, 我也不例外, 不过nvm也需要用命令手动切换, 好麻烦, 没办法我太懒了, 不想动, 因此我就想到了用.nvmrc配置node版本, 不过它也需要手动执行nvm use, 不过可以不用带版本号了, 终于可以偷偷懒了, 但是我更懒, 想一点都不想动。因此我找到了现在的方法 zsh-hook, 下面我们一步步来学习一下。因为我现在使用的是macos, 因此这里只主要介绍macos方案。

nvm安装

  1. 下载
bash 复制代码
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash

或

bash 复制代码
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
  1. 配置环境变量
bash 复制代码
vim ~/.zshrc
# 如果喜欢用vscode也可以用vscode打开
code ~/.zshrc

然后将下面内容复制到文件里面

bash 复制代码
export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
  1. 重新加载终端
bash 复制代码
source ~/.zshrc

开发zsh hook

注: 还是写在.zshrc文件中, 和上面方法一样, 保存后仍要执行source ~/.zshrc

bash 复制代码
# 自动切换 Node.js 版本
autoload -U add-zsh-hook

function nvm-auto-switch() {
  if [[ -f .nvmrc ]]; then
    local nvmrc_version=$(cat .nvmrc)
    local current_version=$(nvm current)

    if [[ ! "$current_version" =~ ^"$nvmrc_version" ]]; then
      echo "当前版本: $current_version"
      echo "需要切换到版本: $nvmrc_version"
      nvm use
    fi
  fi
}

add-zsh-hook chpwd nvm-auto-switch

nvm-auto-switch

最后, 你需要自动切换的项目中需要加入.nvmrc文件, 里面只需要写版本号, 例如v12, 或者详细点v12.1.1,这样你就可以根据不同项目自动切换node版本啦!

相关推荐
郑州光合科技余经理4 分钟前
海外版外卖加盟:总站与分站配送规则怎么分开管
java·开发语言·前端·后端·uni-app·php·ai编程
小呆呆66640 分钟前
副业搞起来,小说,漫画,漫剧的成本优化思路
前端·后端·面试
Dovis(誓平步青云)1 小时前
浇水提醒刚弹出又消失,植物状态别只存一个百分比
开发语言·前端·javascript·pdf·ecmascript·电脑
码艺-Alimjan2 小时前
Vben Admin 新增维吾尔语 Vben-Modal的关键坑之一
前端·javascript·vue.js
可乐鸡翅yeah_2 小时前
hls.js 手动自定义 http 请求 loader,修改请求头实战
开发语言·前端·javascript·网络协议·http·ecmascript·m3u8在线
IT_陈寒2 小时前
Vite静态资源导入这个坑我帮你们踩过了
前端·人工智能·后端
广州华水科技2 小时前
大坝安全监测解决方案:单北斗GNSS形变监测系统应用与维护
前端
yivifu3 小时前
中文古籍电子书注释集成
前端·javascript·python·beautifulsoup·epub
默_笙4 小时前
🛴 从散件到整机:DeepAgents 与 Agent 身上预留的那些"插槽"(前置介绍)
前端·javascript
zhangzeyuaaa4 小时前
深入理解 Ruby 运算符:本质、分类、坑点与重载实战
开发语言·前端·ruby