yarn保姆级安装和使用

目录

前言

一、yarn简介

主要特性

使用场景

二、yarn的安装

yarn的下载

配置环境变量

三、yarn的常用命令

四、yarn的常用配置项

五、npm与yarn的区别

前言

        本文旨在介绍如何安装和使用Yarn,以及它的一些常见用法。我们将从Yarn的基本概念开始,逐步深入介绍其安装和使用方法,并分享一些实用的技巧和注意事项。无论你是刚入门的新手还是有一定经验的开发者,相信本文都能给你带来一些帮助和启发。

一、yarn简介

        Yarn是一个快速、可靠、安全的JavaScript包管理工具,由Facebook、Google、Exponent和Tilde等团队共同开发和维护。它的主要目标是解决npm(Node Package Manager)在包管理过程中的一些常见问题,如安装速度慢、包版本不一致等。Yarn通过引入缓存、并行安装和确定性安装等特性,大大提高了包管理的效率和可靠性。

主要特性

  1. 速度快:Yarn使用本地缓存来存储已下载的包,避免了重复下载,从而显著提高了安装速度。同时,Yarn还支持并行安装,可以同时处理多个包的下载和安装,进一步加快了安装过程。

  2. 安全可靠:Yarn使用了一种称为“确定性安装”的算法,确保在不同环境下安装的包版本和依赖关系都是一致的。这有助于减少由于包版本不一致导致的各种问题和错误。

  3. 简洁易用:Yarn的命令行界面简洁明了,易于使用。它提供了与npm类似的命令集,同时还增加了一些新的功能和选项,以满足开发者的不同需求。

  4. 兼容性好:Yarn与npm具有良好的兼容性。它可以直接使用npm的仓库(registry)和包(package),无需进行任何修改。这使得开发者可以轻松地在Yarn和npm之间进行切换,而无需担心兼容性问题。

  5. 扩展性强:Yarn支持插件系统,开发者可以根据自己的需求编写插件来扩展Yarn的功能。这使得Yarn具有很高的灵活性和可扩展性,可以满足不同项目的不同需求。

使用场景

        Yarn适用于各种JavaScript项目,尤其是大型和复杂的项目。在开发过程中,开发者可以使用Yarn来管理项目的依赖关系、构建过程、测试运行等各个方面。同时,Yarn还可以与各种构建工具(如Webpack、Rollup等)和测试框架(如Jest、Mocha等)进行集成,提供完整的项目管理和开发体验。

二、yarn的安装

首先需要先下载NodeJS并进行npm的配置

yarn的下载

npm install -g yarn
npm uninstall yarn -g  //yarn卸载

配置环境变量

复制yarn的bin目录地址

配置环境变量

添加yarn\bin系统变量-path 中,是为了 在windows-cmd中能启动 npm.cmd 文件!!

  • 重要! 记得重新打开dos窗口(不管修改什么程序的环境变量,都必须重新打开dos窗口,才会生效)

三、yarn的常用命令

yarn -v  // 查看yarn 版本
yarn config list  // 查看yarn配置
yarn config get registry   // 查看当前yarn源// 修改yarn源(此处为淘宝的源)
yarn config set registry https://registry.npm.taobao.org  // yarn安装依赖
yarn add 包名          // 局部安装
yarn global add 包名   // 全局安装// yarn 卸载依赖
yarn remove 包名         // 局部卸载
yarn global remove 包名  // 全局卸载(如果安装时安到了全局,那么卸载就要对应卸载全局的)// yarn 查看全局安装过的包
yarn global list  npm install -g yarn  // 安装yarn 
yarn --version       // 安装成功后,查看版本号
md yarn   // 创建文件夹 yarn  
cd yarn   // 进入yarn文件夹 初始化项目 
yarn init // 同npm init,执行输入信息后,会生成package.json文件yarn的配置项: 
yarn config list // 显示所有配置项
yarn config get <key> //显示某配置项
yarn config delete <key> //删除某配置项
yarn config set <key> <value> [-g|--global] //设置配置项安装包: 
yarn install         //安装package.json里所有包,并将包及它的所有依赖项保存进yarn.lock
yarn install --flat  //安装一个包的单一版本
yarn install --force         //强制重新下载所有包
yarn install --production    //只安装dependencies里的包
yarn install --no-lockfile   //不读取或生成yarn.lock
yarn install --pure-lockfile //不生成yarn.lock
添加包(会更新package.json和yarn.lock):yarn add [package] // 在当前的项目中添加一个依赖包,会自动更新到package.json和yarn.lock文件中
yarn add [package]@[version] // 安装指定版本,这里指的是主要版本,如果需要精确到小版本,使用-E参数
yarn add [package]@[tag] // 安装某个tag(比如beta,next或者latest)//不指定依赖类型默认安装到dependencies里,你也可以指定依赖类型:
yarn add --dev/-D // 加到 devDependencies
yarn add --peer/-P // 加到 peerDependencies
yarn add --optional/-O // 加到 optionalDependencies//默认安装包的主要版本里的最新版本,下面两个命令可以指定版本:
yarn add --exact/-E // 安装包的精确版本。例如yarn add foo@1.2.3会接受1.9.1版,但是yarn add foo@1.2.3 --exact只会接受1.2.3版
yarn add --tilde/-T // 安装包的次要版本里的最新版。例如yarn add foo@1.2.3 --tilde会接受1.2.9,但不接受1.3.0yarn publish // 发布包
yarn remove <packageName>  // 移除一个包,会自动更新package.json和yarn.lock
yarn upgrade // 更新一个依赖: 用于更新包到基于规范范围的最新版本
yarn run   // 运行脚本: 用来执行在 package.json 中 scripts 属性下定义的脚本
yarn info <packageName> 可以用来查看某个模块的最新版本信息缓存 
yarn cache 
yarn cache list # 列出已缓存的每个包 
yarn cache dir # 返回 全局缓存位置 
yarn cache clean # 清除缓存

四、yarn的常用配置项

1.Registry配置

作用:设置Yarn下载包时的源。默认是npm的官方源,但在国内可能会因为网络问题导致下载速度较慢,因此可以设置为淘宝源等国内镜像源以加速下载。

使用yarn config set registry <registry-url>命令进行设置。
例如,设置为淘宝源:yarn config set registry https://registry.npm.taobao.org。

2.全局安装位置

作用:设置Yarn全局安装包的路径。这有助于开发者管理全局安装的包,避免与其他项目或系统文件产生冲突。

使用yarn config set global-folder "<your_path>"命令进行设置。
<your_path>替换为你想要设置的全局包安装路径。

3.查看当前配置

作用:查看Yarn的当前配置信息,包括registry、全局安装位置等。

yarn config list

4.查看特定配置项

作用:如果只需要查看某个特定配置项的值,可以使用该命令。

yarn config get <key>,将<key>替换为要查看的配置项名称。

5.删除配置项

作用:如果需要删除某个配置项,可以使用该命令。

yarn config delete <key>,将<key>替换为要删除的配置项名称。

6.设置配置项

作用:除了上述提到的registry和全局安装位置外,Yarn还支持其他配置项的设置,如代理、认证等。

使用yarn config set <key> <value>命令进行设置。
<key>为配置项名称,<value>为要设置的值。如果需要全局设置,可以添加-g或--global参数。

7.其他常用命令

初始化项目:yarn init,用于创建一个新的项目并生成package.json文件。安装依赖:yarn或yarn install,用于安装package.json中列出的所有依赖项。添加依赖:yarn add <package>,用于在当前项目中添加一个依赖项。升级依赖:yarn upgrade <package>,用于升级项目的某个依赖项到最新版本。移除依赖:yarn remove <package>,用于从项目中移除一个依赖项。全局安装依赖:yarn global add <package>,用于全局安装一个依赖项。

五、npm与yarn的区别

  1. 性能和速度
    • npm在安装和下载依赖时默认采用串行的方式,可能会导致性能上的瓶颈,特别是在项目依赖较多的情况下。
    • yarn则通过并行安装和缓存机制来优化性能。它支持同时下载多个依赖项,并且能够利用缓存来避免重复下载,从而显著提高了安装速度。
  2. 缓存机制
    • npm的缓存机制相对较弱,如果网络条件不佳,可能会导致重复下载和安装。
    • yarn具有更强大的缓存机制,能够更好地利用缓存来减少重复下载,节省时间和带宽。这对于团队协作和构建机器上的重复构建特别有益。
  3. 安全性
    • npm提供了安全功能,如审计和锁定文件,但安全性稍低。
    • yarn在包的下载和安装过程中更加注重安全性。它使用yarn.lock文件来锁定依赖项的版本,确保在不同环境下使用的是相同的依赖版本,减少由于依赖项版本不一致导致的问题。此外,yarn还引入了Yarn Audit功能,用于检查项目的依赖项是否有已知的安全漏洞。
  4. 命令行界面(CLI)
    • npm的命令行界面较为简洁,但输出信息可能较为冗长。
    • yarn提供了更友好和直观的命令行界面,显示更详细的信息,如安装进度、依赖关系树等。这使得输出更加清晰易读,提高了用户体验。
  5. 生态系统
    • npm是Node.js生态系统的默认包管理工具,拥有庞大的包库和活跃的社区支持。大多数开源项目和文档都以npm为主要的依赖管理工具。
    • yarn虽然用户数量在不断增加,但npm仍然是广泛使用的。然而,yarn在某些方面(如性能和安全性)提供了改进,因此在一些项目中可能更受欢迎。
  6. 版本管理
    • npm通过package-lock.json文件来锁定依赖项的版本,但需要在项目中手动执行npm shrinkwrap命令来生成该文件。
    • yarn使用yarn.lock文件来锁定依赖项的版本,并且该文件是自动生成的。这确保了每次拉取同一个项目依赖时,使用的都是一致的模块版本。
  7. 易用性
    • npm的命令简单直观,容易上手。
    • yarn在易用性方面提供了一些改进,如更简洁的输出和更友好的命令行界面。然而,yarn相对于npm来说可能有一定的学习曲线,配置和使用相对复杂一些。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

卡尔曼滤波器例子

卡尔曼滤波器 卡尔曼滤波器(Kalman Filter)是一种用于线性系统状态估计的递归算法,可以有效地融合传感器数据和系统模型来估计系统的状态。它在机器人学中广泛应用,尤其是位置和速度等状态的估计。通过卡尔曼滤波器,可以有效地估计机器人在二维平面内的真实位置,并减小测…

【JavaEE】Spring IoCDI详解

一.基本概念 1.Ioc基本概念 Ioc: Inversion of Control (控制反转), 也就是说 Spring 是⼀个"控制反转"的容器. 什么是控制反转呢? 也就是控制权反转. 什么的控制权发发了反转? 获得依赖对象的过程被反转了也就是说, 当需要某个对象时, 传统开发模式中需要自己通…

商城项目【尚品汇】08异步编排

文章目录 1.线程的创建方式1.1继承Thread类&#xff0c;重写run方法1.2实现Runnable接口&#xff0c;重写run方法。1.3实现Callable接口&#xff0c;重新call方法1.4以上三种总结1.5使用线程池创建线程1.5.1线程池创建线程的方式1.5.2线程池的七大参数含义1.5.3线程池的工作流程…

视觉SLAM十四讲:从理论到实践(Chapter9:后端1)

前言 学习笔记&#xff0c;仅供学习&#xff0c;不做商用&#xff0c;如有侵权&#xff0c;联系我删除即可 一、目标 1.理解后端的概念。 2.理解以EKF为代表的滤波器后端的工作原理。 3.理解非线性优化的后端&#xff0c;明白稀疏性是如何利用的。 4.使用g2o和Ceres实际操作…

报表或者BI的价值在哪?这是十几年的问题啦!

对&#xff0c;问题已经十几年了&#xff0c;答案也应该普世都懂了吧&#xff0c;但非常遗憾&#xff0c;答案没有问题普及的广。看似简单&#xff0c;但也难说清楚&#xff0c;不同的人&#xff0c;总会有不同的看法。 为什么要解释这个并不新鲜的问题&#xff1f; 因为有人问…

阅读笔记:Multi-threaded Rasterization in the Chromium Compositor

Multi-threaded Rasterization in the Chromium Compositor PPT 原始链接&#xff1a; https://docs.google.com/presentation/d/1nPEC4YRz-V1m_TsGB0pK3mZMRMVvHD1JXsHGr8I3Hvc/edit?uspsharing PPT主要介绍了Chromium浏览器中使用多线程光栅化(Impl-side painting)的机制&a…

基于NodeJs 的Vue安装和创建项目

基于NodeJs 的Vue安装和创建项目 一、Node.js的下载与安装 下载地址&#xff1a; https://nodejs.org/en/download/prebuilt-installer 安装完之后&#xff0c;启动 cmd命令行&#xff0c;验证 Node.js 是否安装成功 二、配置npm的全局模块的存放路径以及缓存的路径 注&…

【简单介绍下DALL-E2,什么是DALL-E2?】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

【数据结构】 -- 堆 (堆排序)(TOP-K问题)

引入 要学习堆&#xff0c;首先要先简单的了解一下二叉树&#xff0c;二叉树是一种常见的树形数据结构&#xff0c;每个节点最多有两个子节点&#xff0c;通常称为左子节点和右子节点。它具有以下特点&#xff1a; 根节点&#xff08;Root&#xff09;&#xff1a;树的顶部节…

idea如何根据路径快速在项目中快速打卡该页面

在idea项目中使用快捷键shift根据路径快速找到该文件并打卡 双击shift(连续按两下shift) -粘贴文件路径-鼠标左键点击选中跳转的路径 自动进入该路径页面 例如&#xff1a;我的实例路径为src/views/user/govType.vue 输入src/views/user/govType或加vue后缀src/views/user/go…

Cweek4+5

C语言学习 十.指针详解 6.有关函数指针的代码 代码1&#xff1a;(*(void (*)())0)(); void(*)()是函数指针类型&#xff0c;0是一个函数的地址 (void(*)())是强制转换 总的是调用0地址处的函数&#xff0c;传入参数为空 代码2&#xff1a;void (*signal(int, void(*)(int))…

以客户为中心:消费电子行业的产品研发之道

在消费电子行业这片快速变化的领域中&#xff0c;产品的迭代更新和技术的创新是推动行业不断前进的动力。然而&#xff0c;随着市场的日益成熟和消费者需求的多样化&#xff0c;如何确保产品能够满足目标用户的需求&#xff0c;成为摆在每一个产品研发团队面前的难题。本文将探…

JVM垃圾收集器和性能调优

目标&#xff1a; 1.JVM垃圾收集器有哪几种&#xff1f; 2.CMS垃圾收集器回收步骤。 一、JVM常见的垃圾回收器 为什么垃圾回收的时候需要STW? 标记垃圾的时候&#xff0c;如果不STW&#xff0c;可能用户线程就会不停的产生垃圾。 1.1 单线程收集 Serial和SerialOld使用单…

如何下载BarTender软件及详细安装步骤

BarTender是美国海鸥科技推出的一款优秀的条码打印软件&#xff0c;应用于 WINDOWS95 、 98 、 NT 、 XP 、 2000 、 2003 和 3.1 版本&#xff0c; 产品支持广泛的条形码码制和条形码打印机&#xff0c; 不但支持条形码打印机而且支持激光打印机&#xff0c;还为世界知名品牌条…

基于R语言BIOMOD2 及机器学习方法的物种分布模拟与案例分析

原文链接&#xff1a;基于R语言BIOMOD2 及机器学习方法的物种分布模拟与案例分析https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247606139&idx4&snf94ec30bfb5fa7ac0320403d49db3b66&chksmfa821e9ccdf5978a44a9ba96f6e04a121c0bbf63beea0940b385011c0b…

联合体和枚举<C语言>

导言 在C语言中除了结构体外&#xff0c;联合体和枚举也是自定义类型&#xff0c;联合体主要用于节省空间&#xff0c;在同一块内存存储多种类型的数据&#xff0c;而枚举可以提高代码的可读性、可维护性。 联合体&#xff08;union&#xff09; 它还有个更容易理解的名字&…

力扣2444.统计定界子数组的数目

力扣2444.统计定界子数组的数目 观察到不满足条件的数 可以作为天然的分割线 因此在枚举右端点的过程中 预处理minK&#xff0c;maxK和分割线上一次出现的下标 res min(min_i,max_i) - i0; 但是因为可能在到下个区段时 min_i和max_i尚未更新 导致结果为负数 所以要跟0再取一…

【devops】 Bytebase 一站式开源 数据库DevOps平台

初识 Bytebase 1、安装 安装地址 https://www.bytebase.com/docs/get-started/self-host/#docker 安装指令 docker run --init \--name bytebase \--publish 8080:8080 --pull always \--volume ~/.bytebase/data:/var/opt/bytebase \bytebase/bytebase:2.18.02、登录-dashboa…

红黑树的介绍与实现

前言 前面我们介绍了AVL树&#xff0c;AVL树是一棵非常自律的树&#xff0c;有着严格的高度可控制&#xff01;但是正它的自律给他带来了另一个问题&#xff0c;即虽然他的查找效率很高&#xff0c;但是插入和删除由于旋转而导致效率没有那么高。我们上一期的结尾说过经常修改…

为何PHP使用率 大幅度下降!需求量几乎为零!

用PHP的人越来越少的主要原因包括&#xff1a;市场竞争加剧、新技术的出现、性能和安全问题、以及开发者社区的变化。市场竞争加剧是其中一个突出的因素。随着Python、Node.js等现代编程语言的崛起&#xff0c;它们提供了更好的性能、更简洁的语法和更丰富的框架&#xff0c;逐…