.nvmrc 文件使用详解

文章目录

        • [1. 前言](#1. 前言)
        • [2. .nvmrc 是什么](#2. .nvmrc 是什么)
        • [3. 创建 .nvmrc 文件](#3. 创建 .nvmrc 文件)
        • [4. 使用 .nvmrc 文件](#4. 使用 .nvmrc 文件)
        • [5. 终端自动切换版本](#5. 终端自动切换版本)
1. 前言

当开发多个项目时,每个项目运行环境要求的 node 版本不一样,那么我们就需要给每个项目指定 node 版本,也就是通过终端执行 nvm install 和 nvm use 命令去安装并切换版本。

但是每次都要在终端手动执行命令就很麻烦,特别是项目越来越多的时候,容易忘记切换版本或切换错版本,会导致项目启动不了或运行中有一些错误。

这就需要一个管理 node 版本的方法,自动切换 node 版本,这时 .nvmrc 就该上场了

2. .nvmrc 是什么

.nvmrc 的作用:便于切换 node 版本,保证多人开发环境的一致性

.nvmrc 是一个文件,文件内容非常简单,只有一个 nvm 可识别的 node 版本文本内容,比如: v12.18.2,这个文件应该放在项目根目录下,并且不应被 git 忽略

3. 创建 .nvmrc 文件

打开终端,进入项目根目录执行以下命令,使用 nvm 可识别的版本号格式即可:

以下命令会将字符串填入指向的文件中并创建,当文件存在时,则会对文件进行重写

bash 复制代码
echo "12.18.2" > .nvmrc
echo "v12.18.2" > .nvmrc
echo "lts/fermium" > .nvmrc
4. 使用 .nvmrc 文件

在有 .nvmrc 文件的目录执行以下命令,会读取并尝试切换 .nvmrc 中的 node 版本

该命令会从当前目录向上遍历目录结构寻找 .nvmrc 文件,在带有 .nvmrc 的目录的任何子目录运行该命令都会起作用

复制代码
nvm use

如果 .nvmrc 中的 node 版本已安装,当前终端窗口的 node 将自动切换为该版本

如果 .nvmrc 中的 node 版本没有安装,将会出现以下提示

bash 复制代码
# 不适用:版本 v14.15.0 尚未安装
N/A: version "v14.15.0" is not yet installed.
# 您需要运行 nvm install 来安装并使用 .nvmrc 中指定的 node 版本
You need to run `nvm install` to install and use the node version specified in `.nvmrc`.

接下来使用以下命令,nvm install 不带参数时会从 .nvmrc 中读取 node 版本,如果该 node 版本没有安装,将自动进行下载,下载好后会将当前窗口的 node 切换为此版本。如果该版本已经安装,会跳过下载,只将当前窗口的 node 切换

复制代码
nvm install
5. 终端自动切换版本

当使用 nvm use 切换版本仍然觉得麻烦,想要打开终端自动切换 node 版本,也可以实现

zsh 终端根据 .nvmrc 文件自动切换 node 版本:

$HOME/.zshrc 中添加以下代码后,每次进入一个包含 .nvmrc 文件的目录时自动调用 nvm use

复制代码
# 温馨提示: 将其放在 nvm 初始化之后
# nvm 根据 .nvmrc 自动切换 node 版本
autoload -U add-zsh-hook
load-nvmrc() {
  local nvmrc_path="$(nvm_find_nvmrc)"

  if [ -n "$nvmrc_path" ]; then
    local nvmrc_node_version=$(nvm version "$(cat "${nvmrc_path}")")

    if [ "$nvmrc_node_version" = "N/A" ]; then
      nvm install
    elif [ "$nvmrc_node_version" != "$(nvm version)" ]; then
      nvm use
    fi
  elif [ -n "$(PWD=$OLDPWD nvm_find_nvmrc)" ] && [ "$(nvm version)" != "$(nvm version default)" ]; then
    echo "Reverting to nvm default version"
    nvm use default
  fi
}
add-zsh-hook chpwd load-nvmrc
load-nvmrc

编辑好 .zshrc 文件后,执行以下命令使其立即生效

复制代码
source ~/.zshrc

效果如下所示,进入一个含有 .nvmrc 文件的目录会自动切换当前窗口的 node 版本,退出目录时自动切换为默认 node 版本

相关推荐
Stream_Silver1 天前
【Node.js 安装报错解决方案:解决“A later version of Node.js is already installed”问题】
node.js
Anthony_2311 天前
基于 Vue3 + Node.js 的实时可视化监控系统实现
node.js
说给风听.2 天前
解决 Node.js 版本冲突:Windows 系统 nvm 安装与使用全指南
windows·node.js
森叶2 天前
Node.js 跨进程通信(IPC)深度进阶:从“杀人”的 kill 到真正的信号
node.js·编辑器·vim
虹科网络安全2 天前
艾体宝新闻 | NPM 生态系统陷入困境:自我传播恶意软件在大规模供应链攻击中感染了 187 个软件包
前端·npm·node.js
摇滚侠2 天前
PNPM 包管理工具和 NPM 包管理工具
vscode·npm·node.js·pnpm
心柠3 天前
webpack
前端·webpack·node.js
FreeBuf_3 天前
vm2 Node.js库曝严重沙箱逃逸漏洞(CVE-2026-22709)可导致任意代码执行
node.js
147API3 天前
改名后的24小时:npm 包抢注如何劫持开源项目供应链
前端·npm·node.js
抵梦3 天前
NPM、CNPM、PNPM:Node.js 依赖工具对比与选择
前端·npm·node.js