.nvmrc 文件使用详解

文章目录

        • 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 版本

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

用Auth Analyzer插件批量测试接口越权,安全测试快人一步!

随着信息化技术的不断发展,软件安全成了软件行业的重大挑战,因此安全测试也成为了测试人员必备的技能之一。 沐沐在安全测试过程中较为常见的就是接口越权漏洞,在尝试过多种工具进行越权漏洞测试后,最终找到了个人认为最便捷最有…

[C++ 从入门到精通] 12.重载运算符、赋值运算符重载、析构函数

📢博客主页:https://loewen.blog.csdn.net📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢本文由 丶布布原创,首发于 CSDN,转载注明出处🙉📢现…

c++|引用

目录 一、引用概念 二、引用特性 三、常引用 (具有常属性的引用变量) 四、使用场景 一、引用概念 引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,他和他引用的变量共用同…

Java动态代理JKD版本

1、ISale.java package com.atguigu; public interface ISale {void saleShaoBing();void saleJianBing();void saleYueBing();void saleManTou(); }2、WuDa.java package com.atguigu;//Target:目标类、目标对象 public class WuDa implements ISale{//target method:目标方法…

Polygon Miden VM架构总览

1. 计算类型 Programs程序有2种类型: 1)Circuit电路:即,程序即电路。将程序转换为电路。2)Virtual machine虚拟机:即,程序为电路的输入。【Miden VM属于此类型】 2. 何为ZK virtual machine…

用Markdown Nice写作

网址:https://www.mdnice.com/ 代码 表格 第二行用来对齐: -表示左对齐 :-:表示居中 -:表示右对齐 数学 上下标 分数 累加 幂 对数 根式 微积分 交集、并集 格式 标题 缩进 删除线 斜体 加粗 参考文献

【ArcGIS Pro二次开发】(77):ArcGIS Pro中图层的获取与解析

一、最简单的获取图层方式 通常情况下,如果要获取当前地图中的图层,可以用2种方法获取。 以下图为例: 一种是【map.Layers】属性获取,结果如下: 可以看出,这里只获取到了第一层级的图层,图层组…

目标检测 详解SSD原理,数据处理与复现

原理详解 前言 今天我们要读的这篇VGGNet(《Very Deep Convolutional Networks For Large-Scale Image Recognition》),就是在AlexNet基础上对深度对网络性能的影响做了进一步的探索。它是ImageNet 2014年亚军,相比于AlexNet&am…

inBuilder低代码平台新特性推荐-第九期

各位知乎的友友们,大家好~ 今天来给大家带来的是inBuilder低代码平台特性推荐系列第九期——子表弹出新增! 01 概述 子表弹出新增,是低代码平台提供的一种前端输入组件,在子表字段较多的场景中,有时为了方便…

代码随想录刷题】Day16 二叉树03

文章目录 1.【104】二叉树的最大深度(优先掌握递归)1.1 前言1.2 题目描述1.3 递归法java代码实现1.4 迭代法java代码实现1.5 相关练习题【559】N叉树的最大深度 2.【111】二叉树的最小深度(优先掌握递归)2.1 题目描述2.2 递归法ja…

智能高效的转运机器人,为物流行业注入新动力

在当今社会,随着科技的不断发展,机器人已经逐渐融入到我们的生活中。其中,转运机器人作为物流行业的新秀,正以其高效、智能的特点,引起了广泛的关注。 转运机器人,是指能够自主进行物品搬运和运输的机器人…

说一下类的生命周期

👽System.out.println(“👋🏼嗨,大家好,我是代码不会敲的小符,双非大四,Java实习中…”); 📚System.out.println(“🎈如果文章中有错误的地方,恳请大家指正&a…

开始通过 Amazon SageMaker JumpStart 在亚马逊云科技上使用生成式 AI

目前,生成式 AI 正受到公众的广泛关注,人们围绕着许多人工智能技术展开讨论。很多客户一直在询问有关亚马逊云科技生成式 AI 解决方案的更多信息,本文将为您进行解答。 这篇文章通过一个真实的客户使用案例概述了生成式 AI,提供了…

京东数据分析软件(京东平台数据分析):2023年Q3扫地机器人行业消费报告

随着90后、00后逐渐成为消费主力军,他们对生活品质更加关注、健康意识进一步增强,再加上“懒人经济”的盛行,人们对扫地机器人的使用率和关注热情也不断增长。 根据鲸参谋电商数据分析平台的相关数据显示,今年7月份-9月份&#xf…

Linux ps -ef|grep去除 grep --color=auto信息

linux 监控 进程判断是否启动可通过该指令实现 ps -ef|grep java指令结果为 # -v 参数有过滤作用 ps -ef|grep java |grep -v grep

CentOS 8最小安装,VM使用这个内存占用小很多

文章目录 一、安装包下载作者使用的安装包 二、安装过程截图三、最小化安装拥有的外部命令四、查看ip(方便ssh连接)五、yum源有问题参考文档 一、安装包下载 CentOS 网站: https://www.centos.org/CentOS 维基: https://wiki.cen…

HugeGraph安装与使用

1、HugeGraph-Server与HugeGraph-Hubble下载 HugeGraph官方地址:https://hugegraph.apache.org/ 环境为:linux 官网是有模块版本对应关系,尽量下载较新版本,hubble1.5.0之前是studio功能比较少。官网已经下架server,其他模块下载也比较慢。可以在网上找…

xss-labs靶场1-5关

文章目录 前言一、靶场需要知道的前置知识点1、什么是xss攻击?2、xss攻击分为几大类1、反射型xss2、存储型xss3、dom型xss 3、xss攻击形成的条件 二、xss-labs关卡1-51、关卡12、关卡23、关卡34、关卡45、关卡5 总结 前言 此文章只用于学习和反思巩固xss攻击知识&a…

4.Gin HTML 模板渲染

4.Gin HTML 模板渲染 Gin HTML 模板渲染 1. 全部模板放在一个目录里面的配置方法 创建用于渲染的模板html templates/index.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> …

如何入驻抖音本地生活服务商,附上便捷流程!

抖音作为一款短视频社交媒体应用&#xff0c;已经成为全球范围内数以亿计的用户的首选。而在普及的同时&#xff0c;短视频领域也在不断拓展自身的业务领域&#xff0c;其中之一就是本地生活服务。继抖音本地生活服务之后支付宝、视频号也相继开展了本地生活服务&#xff0c;用…