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.0

yarn 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来说可能有一定的学习曲线,配置和使用相对复杂一些。

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

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

相关文章

以sqlilabs靶场为例,讲解SQL注入攻击原理【32-41关】

【Less-32】 尝试使用各种注入发现无论是单引号还是双引号都被\转义成了字符串&#xff0c;导致SQL无法注入。 解决方案&#xff1a;宽字节注入。原理&#xff1a;利用数据库和页面编码不同的问题&#xff0c;PHP发送请求到mysql时经过一次gbk编码&#xff0c;因为GBK是双字节…

易于上手的requests

Python中的requests库主要用于发送HTTP请求并获取响应结果。在现代网络编程中&#xff0c;HTTP请求是构建客户端与服务器之间通信的基础。Python作为一种高级编程语言&#xff0c;其丰富的库支持使得它在网络数据处理领域尤为突出。其中&#xff0c;requests库以其简洁、易用的…

【计算机视觉】数字图像处理基础:以像素为单位的图像基本运算(点运算、代数运算、逻辑运算、几何运算、插值)

0、前言 在上篇文章中&#xff0c;我们对什么是数字图像、以及数字图像的组成&#xff08;离散的像素点&#xff09;进行了讲解&#x1f517;【计算机视觉】数字图像处理基础知识&#xff1a;模拟和数字图像、采样量化、像素的基本关系、灰度直方图、图像的分类。 我们知道&a…

高考作文:时光之河,逐梦前行

时光之河&#xff0c;奔流不息&#xff0c;如同我们的人生旅途&#xff0c;充满了未知与挑战。站在2024年的高考门槛前&#xff0c;我们回望过去&#xff0c;展望未来&#xff0c;心中充满了期待与憧憬。 首先&#xff0c;让我们回顾一下这条时光之河中的点滴。过去的岁月里&am…

java 大型企业MES生产管理系统源码:MES系统与柔性化产线控制系统的关系、作用

MES定义为“位于上层的计划管理系统与底层的工业控制之间的面向车间层的管理信息系统”,它为操作人员/管理人员提供计划的执行、跟踪以及所有资源(人、设备、物料、客户需求等)的当前状态。 MES系统与柔性化产线控制系统的关系 MES&#xff08;制造执行系统&#xff09;是一种…

i.MX8MP平台开发分享(RDC软件配置篇)

Uboot中已经将RDC的配置写入到了OCRAM中&#xff0c;NXP在ATF中预设了SIP服务&#xff0c;SIP服务下有厂商自定义的smc命令ID。例如下面的DDR、GPC、SRC和HAB的smc回调函数。 在SRC中断处理函数中&#xff0c;对于SRC_M4_START指令&#xff0c;先读取OCRAM中的配置&#xff0c;…

记录一次springboot、ruoyi若依前后端不分离项目和vue项目的合并整合问题,搞了一天总结

项目场景&#xff1a; 因为此功能只做为客户方一个小模块&#xff0c;客户方使用的是springboot前后端不分离的架构。而我们的项目是使用前后端分离springbootvue的架构。在接项目前&#xff0c;项目已经存在&#xff0c;所以不存在设计架构的前提。实际是在原有基础上修改的。…

了解Synchronized对象头?

1、对象头的结构 Java对象存储在内存中结构为&#xff1a; 对象头&#xff08;Header&#xff09;&#xff1a;实例数据&#xff08;Instance Data&#xff09;&#xff1a;定义类中的成员属性对齐填充字节&#xff08;Padding&#xff09;&#xff1a;由于HotSpot虚拟机的自…

USB Type-C 和 USB供电数据和电源角色

USB Type-C 连接器生态系统随着现代平台和设备需求的变化而不断发展。 USB Type-C 连接器生态系统可满足现代平台和设备不断变化的需求&#xff0c;并且符合更小、更薄且更轻便的外形设计趋势。此外&#xff0c;针对 Type-C 连接器修改 USB PD 有助于满足高耗电应用的需求。 …

GDPU JavaWeb Ajax请求

异步请求可以提升用户体验并优化页面性能。 ajax登录 实现ajax异步登录。 注意&#xff0c;ajax用到了jQuery库&#xff0c;先下载好相应的js库&#xff0c;然后复制导入到工程的web目录下&#xff0c;最好与你的前端页面同一层级。然后编写时路径一定要找准&#xff0c;“pag…

STM32F103C8移植uCOSIII并以不同周期点亮两个LED灯(HAL库方式)【uCOS】【STM32开发板】【STM32CubeMX】

STM32F103C8移植uC/OSIII并以不同周期点亮两个LED灯&#xff08;HAL库方式&#xff09;【uC/OS】【STM32开发板】【STM32CubeMX】 实验说明 将嵌入式操作系统uC/OSIII移植到STM32F103C8上&#xff0c;构建两个任务&#xff0c;两个任务分别以1s和3s周期对LED进行点亮—熄灭的…

Android基本概念

Android发展历史 Android 是一个流行的移动操作系统&#xff0c;由 Google 开发并于 2008 年首次推出。 Android是基于Linux开发的移动设备操作系统。 在2005年被Google收购&#xff0c;2008年发布Android1.0&#xff0c;后续发布1.5/1.6 ------ 直到2021年发布Andriod12 。 …

什么是大型语言模型 ?

引言 在本文[1]中&#xff0c;我们将从高层次概述大型语言模型 (LLM) 的具体含义。 背景 2023年11月&#xff0c;我偶然间听闻了OpenAI的开发者大会&#xff0c;这个大会展示了人工智能领域的革命性进展&#xff0c;让我深深着迷。怀着对这一领域的浓厚兴趣&#xff0c;我加入了…

【Python】解决Python报错:ZeroDivisionError: division by zero

​​​​ 文章目录 引言1. 错误详解2. 常见的出错场景2.1 直接除零2.2 变量导致的间接除零 3. 解决方案3.1 检查除数3.2 使用异常处理 4. 预防措施4.1 数据验证4.2 编写防御性代码 结语 引言 在Python中&#xff0c;尝试将一个数字除以零时&#xff0c;会抛出ZeroDivisionErr…

重邮计算机网络803-(1)概述

目录 二.互联网概述 1.网络的网络 2.计算机网络的概念 3. 互联网发展的三个阶段 4.制订互联网的正式标准要经过以下的四个阶段 5.互联网的组成&#xff08;功能&#xff09; 6.互联网功能 7.互联网的组成&#xff08;物理&#xff09; 8. 互联网的边缘部分 9.两种通信…

串口屏在焊接机上的应用

在现代工业自动化浪潮中&#xff0c;焊接技术作为制造业的脊梁&#xff0c;其精准与效率直接关系到产品的质量和生产线的流畅性。而在这场技术的革新中&#xff0c;串口屏以其独特的优势&#xff0c;正成为焊接机领域的璀璨明星。今天&#xff0c;就让我们一同探索串口屏如何助…

手猫助手Agent技术探索总结

随着LLM的发展&#xff0c;ChatGPT能力不断增强&#xff0c;AI不断有新的概念提出&#xff0c;一种衍生类型的应用AI Agent也借着这股春风开启了一波话题热度&#xff0c;各种初创公司&#xff0c;包括Open AI内部也都在密切关注着AI Agent领域的变化。阿里集团内的AI团队也有很…

了解JVM中的Server和Client参数

了解JVM中的Server和Client参数 Java虚拟机&#xff08;Java Virtual Machine&#xff0c;JVM&#xff09;作为Java程序运行的核心&#xff0c;提供了多种参数来优化和调整程序的性能和行为。其中&#xff0c;-server和-client是两个重要的参数&#xff0c;分别用于配置JVM在服…

SMS - 基于阿里云实现手机短信验证码登录(无需备案,非测试)

目录 SMS 环境调试 从阿里云云市场中购买第三方短信服务 调试短信验证码功能 实战开发 封装组件 对外接口 调用演示 SMS 环境调试 从阿里云云市场中购买第三方短信服务 a&#xff09;进入阿里云首页&#xff0c;然后从云市场中找到 “短信” &#xff08;一定要从 云…

BUG解决: Zotero 文献GBT7714无法正常调用

1. 下载csl文件 网上有推荐直接下载现成版本的&#xff0c;比如参考资料【1】的蓝奏云文件&#xff0c;但是还是无法实现功能&#xff08;空文档中可以用了&#xff09;。 2. Github版本 也有说网盘版本和那个 Juris-M 的 CSL bug 太多的。 总结 后面发现&#xff0c;只需…