.nvmrc 文件使用详解

news2024/9/19 10:42:57

文章目录

        • 1. 前言
        • 2. .nvmrc 是什么
        • 3. 创建 .nvmrc 文件
        • 4. 使用 .nvmrc 文件
        • 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 可识别的版本号格式即可:

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

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 版本没有安装,将会出现以下提示

# 不适用:版本 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 版本

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1238736.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

虚拟摇杆OnJoystickMove未被调用,角色不移动

更改interaction type 为 event notification

Windows权限维持方法论

Windows权限维持方法论 1.注册表自启动2.组策略设置脚本启动3.计划任务4.服务自启动5.dll劫持6.直接上远程控制木马 1.注册表自启动 通过修改注册表自启动键值,添加一个木马程序路径,实现开机自启动 常用的注册表启动键: # Run键 HKEY_CU…

数据结构-栈的实现

1.栈的概念及结构 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。 压栈&…

2023年中国语言大模型行业发展趋势分析:预计未来行业将迎来高速增长[图]

自然语言处理(NLP)大模型是一种利用深度学习技术来理解、解释和生成人类语言的高参数模型。语言大模型通过编码解码的方式模仿人类处理语言的过程从而达到进行自然语言文本输出的能力。 语言大模型主要组成部分 资料来源:共研产业咨询&#…

【grep】从html表格中快速定位某个数据

文章目录 1 背景2 参考知识2.1 grep2.2 HTML基础语言标签 3 解决方案 1 背景 在html中是一堆表格、图片、文字什么的,想从表格中提取关键词为“GJC”后对应的数字,怎么办呢? 逐个打开html文件,“ctrlF”搜一下,然后复…

数字化文旅系统,让景区营销变得更加简单!

随着互联网的普及和信息技术的不断发展,越来越多的消费者开始通过互联网来获取旅游信息、预订旅游产品和服务。因此,文旅行业需要紧跟时代步伐,借助数字化技术来提高服务质量和效率,满足消费者对于便捷、个性化的需求。 1. 强大功…

每日OJ题_算法_双指针_力扣202. 快乐数

力扣202. 快乐数 202. 快乐数 - 力扣(LeetCode) 难度 简单 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为…

基于MS16F3211芯片的触摸控制灯的状态变化和亮度控制总结版(11.22)

1.任务需求 基于MS16F3211芯片实现功能一个按键通过长按可以控制当前处于亮状态的灯的亮度,当灯从最亮达到最暗时,所用时为3s。现有三盏颜色分别为红绿蓝的灯,在处于关机状态时红灯亮,处于开机状态时红灯灭。点按第一次仅绿灯亮&…

气膜体育馆:低碳环保体育新潮流

在追求健康生活的今天,体育运动的重要性无法忽视。为了满足人民日益增长的体育需求,气膜体育馆应运而生,成为体育场馆领域的一次革命性创新。这种新型体育馆解决了传统体育场馆建设中面临的审批难、周期长、门槛高等问题,为我们的…

网络安全之渗透测试入门准备

渗透测试入门所需知识 操作系统基础:Windows,Linux 网络基础:基础协议与简单原理 编程语言:PHP,python web安全基础 渗透测试入门 渗透测试学习: 1.工具环境准备:①VMware安装及使用&#xff1b…

在Jupyter Lab中使用多个环境,及魔法命令简介

一、Jupyter Lab使用conda虚拟环境 1、给虚拟环境添加 ipykernel 方法一: 创建环境时直接添加ipykernel 方法:conda create -n 【虚拟环境名称】python3.8 ipykernel实例如下: conda create -n tensorflow_cpu python3.8 ipykernel 方法二&#xff…

7-34 通讯录的录入与显示

方法1 import java.util.Scanner;class PTA34 {public static void main (String [] args) {Scanner sc new Scanner(System.in);String s sc.nextLine();int nInteger.parseInt(s);addressbook[] aanew addressbook[n];for (int i 0; i < n; i) {String addressline sc…

动态规划:2304. 网格中的最小路径代价

2304. 网格中的最小路径代价 给你一个下标从 0 开始的整数矩阵 grid &#xff0c;矩阵大小为 m x n &#xff0c;由从 0 到 m * n - 1 的不同整数组成。你可以在此矩阵中&#xff0c;从一个单元格移动到 下一行 的任何其他单元格。如果你位于单元格 (x, y) &#xff0c;且满足…

metersphere 创建场景, 自动动态变换参数值,实现接口自动化测试。

创建场景 创建产品变量 添加数值 添加后点击确定 点击右下角 号 点击 循环控制器 写循环 创建/导入接口 选择运行环境&#xff0c; 没有的话新建一个 需要点击引用环境 保存后点击 调试 成功做到每次请求的参数是列表里的 10

真菌基因组研究高分策略(一):比较基因组揭示真菌菌丝和多细胞的起源

真菌是陆地和水生生态系统的重要组分&#xff0c;在有机质循环和跨营养级养分流通等过程中发挥着重要作用。随着测序技术的发展&#xff0c;高通量测序揭示了真菌群落巨大的系统发育和功能多样性&#xff0c;高质量真菌基因组的组装已经成为研究菌丝和潜在基因的进化起源的有力…

深入浅出 Linux 中的 ARM IOMMU SMMU I

Linux 系统下的 SMMU 介绍 在计算机系统架构中&#xff0c;与传统的用于 CPU 访问内存的管理的 MMU 类似&#xff0c;IOMMU (Input Output Memory Management Unit) 将来自系统 I/O 设备的 DMA 请求传递到系统互连之前&#xff0c;它会先转换请求的地址&#xff0c;并对系统 I…

握住音乐的法宝 - 简谱

简谱是音乐学习中至关重要的记谱法。除了简谱&#xff0c;还有吉他和钢琴的五线谱&#xff0c;以及我最喜欢的古琴减字谱等其他记谱方式。如果你对音乐感兴趣&#xff0c;一起学习吧&#xff0c;我不允许你是一个文盲。 一、调拍号 “1C 4/4”即为调拍号&#xff0c;调拍号分…

爆款文章有诀窍,内容创作者如何能持续产出优质内容

内容营销人有没有这么一种共鸣&#xff1a;10 万 那么多&#xff0c;为什么不能多我一个&#xff1f; 通常&#xff0c;我们把浏览量 / 阅读量高、转评赞数量高的内容看作爆款&#xff0c;而数据如果达到 10 万 则是超级爆款。因为&#xff0c;阅读量高意味着内容得到了大量的曝…

2023-11-22 LeetCode每日一题(网格中的最小路径代价)

2023-11-22每日一题 一、题目编号 2304. 网格中的最小路径代价二、题目链接 点击跳转到题目位置 三、题目描述 给你一个下标从 0 开始的整数矩阵 grid &#xff0c;矩阵大小为 m x n &#xff0c;由从 0 到 m * n - 1 的不同整数组成。你可以在此矩阵中&#xff0c;从一个…