Yarn:一个快速、可靠且安全的JavaScript包管理工具

news2025/1/21 9:25:09

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,还请三连支持一波哇ヾ(@^∇^@)ノ)

目录

一、Yarn简介

二、Yarn的安装

1. 使用npm安装Yarn

2. 在macOS上使用Homebrew安装Yarn

3. 在Windows上使用Chocolatey安装Yarn

4. 在Linux上使用包管理器安装Yarn

三、Yarn的配置

1. 全局配置

2. 项目配置

四、Yarn的基本用法

1. 初始化新项目

2. 添加依赖

3. 升级依赖

4. 移除依赖

5. 安装依赖

6. 运行脚本

7. 查看依赖树

8. 清理缓存


一、Yarn简介

Yarn是一个快速、可靠且安全的JavaScript包管理工具。与npm类似,Yarn用于管理项目的依赖项,但在性能、安全性和一致性方面做了许多改进。Yarn通过并行化下载和本地缓存机制,大大提升了依赖安装的速度,并通过生成yarn.lock文件来确保不同环境中依赖版本的一致性。

Yarn的主要特点包括:

  • 快速性能:通过并行下载和本地缓存,Yarn显著加快了包的安装速度。
  • 可靠性:通过严格的依赖管理和yarn.lock文件,Yarn确保了依赖项在不同环境中的一致性。
  • 安全性:Yarn会验证依赖项的来源和内容,以确保下载的内容与预期一致。
  • 语义化版本控制:支持指定依赖项的版本范围,以便在满足向后兼容的情况下自动更新。
  • 离线支持:通过本地缓存,Yarn支持在无网络连接的情况下安装包。
  • 自动解决依赖冲突:Yarn能够自动解决依赖冲突,确保项目中使用的每个依赖项都符合其他依赖项的要求。

二、Yarn的安装

Yarn的安装方法多种多样,以下是一些常见的安装方法:

1. 使用npm安装Yarn

这是最简单且推荐的方法。确保你的计算机上已经安装了Node.js,因为npm(Node Package Manager)是Node.js的包管理器。在命令行或终端中执行以下命令来全局安装Yarn:

npm install -g yarn

安装完成后,你可以通过运行yarn --version来验证Yarn是否安装成功。

2. 在macOS上使用Homebrew安装Yarn

如果你使用的是macOS,可以通过Homebrew来安装Yarn。首先确保安装了Homebrew,然后在终端中执行以下命令:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"  
brew install yarn

安装完成后,同样使用yarn --version来验证安装是否成功。

3. 在Windows上使用Chocolatey安装Yarn

在Windows上,你可以通过Chocolatey来安装Yarn。首先安装Chocolatey,然后在PowerShell中以管理员身份运行以下命令:

Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))  
choco install yarn

安装完成后,在命令提示符中运行yarn --version来验证安装是否成功。

4. 在Linux上使用包管理器安装Yarn

不同的Linux发行版有不同的包管理器。以Debian或Ubuntu为例,你可以使用APT来安装Yarn:

curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -  
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list  
sudo apt update && sudo apt install yarn

安装完成后,在终端中运行yarn --version来验证安装是否成功。

三、Yarn的配置

Yarn的配置主要包括全局配置和项目配置。你可以通过yarn config命令来查看和设置配置选项。

1. 全局配置

全局配置将影响所有Yarn项目。你可以使用yarn config set命令来设置全局配置选项。例如,要设置全局镜像源为淘宝NPM镜像,可以执行以下命令:

yarn config set registry https://registry.npm.taobao.org

你可以使用yarn config list命令来查看当前的全局配置项和值。

2. 项目配置

项目配置仅影响当前Yarn项目。你可以在项目的根目录下创建一个名为.yarnrc.yarnrc.yml的配置文件,并在其中设置项目特定的配置选项。例如,要在项目中禁用Yarn的自动安装功能,可以在.yarnrc文件中添加以下内容:

enableGlobalCache false

四、Yarn的基本用法

Yarn提供了丰富的命令来管理项目的依赖项和执行各种任务。以下是一些常用的命令及其用法:

1. 初始化新项目

当你开始一个新的JavaScript项目时,首先需要初始化Yarn项目。在项目根目录下打开终端或命令行界面,运行以下命令:

yarn init

这个命令会引导你通过一系列问题来配置你的项目,如项目名称、版本、描述、入口文件等。你也可以选择使用-y--yes标志来自动填充这些选项,生成一个默认的配置文件package.json

2. 添加依赖

在开发过程中,你可能需要安装第三方库或框架作为项目的依赖项。Yarn提供了add命令来添加依赖项。你可以通过以下方式添加依赖:

yarn add <package-name>

默认情况下,Yarn会将依赖项添加到package.jsondependencies部分,这意味着这些依赖项在生产环境中也是必需的。如果你希望添加仅在开发过程中使用的依赖项(如测试框架或构建工具),可以使用--dev-D标志:

yarn add <package-name> --dev

或者使用yarn add -D <package-name>,这会将依赖项添加到devDependencies部分。

3. 升级依赖

随着项目的进行,你可能需要升级已安装的依赖项以获取新功能、修复bug或提高性能。Yarn提供了upgrade命令来升级依赖项。你可以单独升级一个依赖项,也可以升级所有依赖项:

# 升级单个依赖项  
yarn upgrade <package-name>  
  
# 升级所有依赖项(谨慎使用,因为它会更新`package.json`和`yarn.lock`中的所有依赖项)  
yarn upgrade

如果你只想更新package.json中指定的版本范围,而不改变yarn.lock中锁定的具体版本,可以使用--latest标志,但这通常不推荐,因为它可能会引入不稳定的依赖项版本:

yarn upgrade <package-name> --latest

4. 移除依赖

当某个依赖项不再需要时,你可以使用remove命令将其从项目中移除。这个命令会从package.jsonyarn.lock文件中删除该依赖项,并卸载它在node_modules目录中的文件:

yarn remove <package-name>

5. 安装依赖

在项目的生命周期中,你可能会多次需要安装依赖项。Yarn提供了install命令来安装package.json中列出的所有依赖项。如果你刚刚克隆了一个项目,或者删除了node_modules目录和yarn.lock文件,你需要运行这个命令来恢复项目的依赖项:

yarn install

默认情况下,Yarn会读取package.jsonyarn.lock文件,并安装指定版本的依赖项到node_modules目录中。

6. 运行脚本

package.json文件中的scripts部分允许你定义可以在项目根目录下通过Yarn运行的自定义脚本。这些脚本可以执行任何命令,包括启动开发服务器、运行测试套件、构建项目等。

例如,如果你有一个名为start的脚本,你可以通过以下命令来运行它:

yarn start

这个命令会查找package.json中的scripts.start字段,并执行对应的命令。

7. 查看依赖树

随着项目的增长,依赖项的数量也会增加,这可能会导致依赖树变得复杂且难以管理。Yarn提供了list命令来查看项目的依赖树:

yarn list

默认情况下,这个命令会列出所有已安装的依赖项及其版本。你可以使用--pattern-p标志来过滤结果,只显示与指定模式匹配的依赖项:

yarn list --pattern <pattern>

8. 清理缓存

Yarn会在本地缓存已下载的包,以便在后续安装时能够更快地恢复依赖项。然而,在某些情况下,你可能需要清理缓存,以解决缓存损坏或过时的问题。Yarn提供了cache clean命令来清理缓存

yarn cache clean

你可以使用--all标志来清理所有缓存的包,而不仅仅是过期的包:

yarn cache clean --all

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

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

相关文章

11.redis的客户端-Jedis

1.Jedis 以redis命令作为方法名称&#xff0c;学习成本低&#xff0c;简单使用。但是jedis实例是不安全的&#xff0c;多线程环境下需要基于连接池来使用。 2.Lettuce lettuce是基于Netty实现的&#xff0c;支持同步&#xff0c;异步和响应式编程方式&#xff0c;并且是线程…

EmEditor 打开文档后光标如何默认定位到文档最后一行?

1、录制宏 &#xff08;1&#xff09;、点击工具栏上的红色录制宏按钮&#xff0c;开始录制宏。如图&#xff1a; &#xff08;2&#xff09;、按住快捷键Ctrl End快捷键&#xff0c;使光标跳转到文档末尾 &#xff08;3&#xff09;、完成录制后&#xff0c;再次点击录制按钮…

Hive SQL ——窗口函数源码阅读

前言 使用Starrocks引擎中的窗口函数 row_number() over( )对10亿的数据集进行去重操作&#xff0c;BE内存溢出问题频发&#xff08;忘记当时指定的BE内存上限是多少了.....&#xff09;&#xff0c;此时才意识到&#xff0c;开窗操作&#xff0c;如果使用 不当&#xff0c;反而…

stm32工程配置

目录 STM32F103 start&#xff1a;启动文件、内核寄存器文件、外设寄存器文件、时钟配置文件 library&#xff1a;标准库函数&#xff08;内核及外设驱动&#xff09; user&#xff1a;用户文件、库函数配置文件、中断程序文件 添加宏定义 STM32F407 start目录 启动文件…

实战:使用Certbot签发免费ssl泛域名证书(主域名及其它子域名共用同一套证书)-2024.8.4(成功测试)

1、使用Certbot签发免费ssl泛域名证书 | One实战&#xff1a;使用Certbot签发免费ssl泛域名证书(主域名及其它子域名共用同一套证书)-2024.8.4(成功测试)https://wiki.onedayxyy.cn/docs/docs/Certbot-install/

Transformer相关介绍

1 Transformer 介绍 Transformer的本质上是一个Encoder-Decoder的结构。 1.1 编码器 在Transformer模型中&#xff0c;编码器&#xff08;Encoder&#xff09; 的主要作用是将输入序列&#xff08;例如文本、语音等&#xff09;转换为隐藏表示&#xff08;或者称为特征表示…

24军dui文职联勤保障部报名照规格要求

24军dui文职联勤保障部报名照规格要求 #军队文职 #文职 #文职备考 #联勤保障部队 #文职考试 #文职上岸 #2024军队文职

python-查找元素3(赛氪OJ)

[题目描述] 有n个不同的数&#xff0c;从小到大排成一列。现在告诉你其中的一个数x&#xff0c;x不一定是原先数列中的数。你需要输出最后一个<x的数在此数组中的下标。输入&#xff1a; 输入共两行第一行为两个整数n、x。第二行为n个整数&#xff0c;代表a[i]。输出&#x…

练习2.30

2.29题目没有理解,暂时没有做出来,先把2.30做了 上代码 (defn square [x](* x x)) ;第一版,直接定义 (defn square-tree[tree](cond (not (seq? tree)) (square tree)(empty? tree) nil:else (cons (square-tree (first tree)) (square-tree (rest tree)))) ) ;使用map …

LeetCode刷题笔记 | 283 | 移动零 | 双指针 |Java | 详细注释

&#x1f64b;大家好&#xff01;我是毛毛张! &#x1f308;个人首页&#xff1a; 神马都会亿点点的毛毛张 原地移除元素2 LeetCode链接&#xff1a;283. 移动零 1.题目描述 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元…

Nextjs——国际化那些事儿

背景&#xff1a; 某一天&#xff0c;产品经理跟我说&#xff0c;我们的产品需要搞国际化 国际化的需求说白了就是把项目中的文案翻译成不同的语言&#xff0c;用户想用啥语言来浏览网页就用啥语言&#xff0c;虽然说英语是通用语言&#xff0c;但国际化了嘛&#xff0c;产品才…

学习编程的第二十天,加油!

3&#xff1a;递归与迭送&#xff08;循环是一种迭代&#xff09; &#xff01;&#xff01;&#xff01;递归算有些东西时计算量会很大导致运行时间过久&#xff0c;而使用循环会大大节省时间&#xff0c;但需要注意溢出的情况。 递归的练习&#xff0c;第一张呢不符合我们的…

刷题——不同路径的数目

不同路径的数目(一)_牛客题霸_牛客网 我第一眼&#xff0c;觉得是没有思路的&#xff0c;我也是看别人代码反应过来&#xff0c; 画图可以看出来 外边沿的只有一种到达方式&#xff0c;全部赋值1&#xff0c; 如果有两个方块相接&#xff0c;那就让此方块的左邻和右邻相加&…

线程池ThreadPoolExecutor使用

文章目录 一、基础-Java中线程创建的方式1.1、继承Thread类创建线程1.2、实现Runnable接口创建线程1.3、实现Calable接口创建线程1.4、使用线程池创建线程二、概念-线程池基本概念2.1、并发和井行的主要区别2.1.1、处理任务不同2.1.2、存在不同2.1.3、CPU资源不同2.2、什么是线…

网页保护用户 小tips

在使用创建web开发的过程中&#xff0c;直接使用用户名url&#xff0c;容易造成用户信息的被攻击&#xff0c;例如对方直接访问 ../../.../username 的网页&#xff0c;可以窃取用户信息&#xff0c;然而把usename变成一堆乱码就安全的多 效果&#xff1a; 代码&#xff1a;…

一个 .NET 开源的地图组件库 - Mapsui

前言 今天大姚给大家分享一个.NET开源&#xff08;MIT License&#xff09;、免费、同时支持多平台框架&#xff08;MAUI、WPF、Avalonia、Uno、Blazor、WinUI、Eto、.NET Android 和 .NET iOS&#xff09;地图组件库&#xff1a;Mapsui。 项目源代码 支持的UI框架的NuGet包 …

JavaFX布局-TabPane

JavaFX布局-TabPane 常用属性paddingsidetabClosingPolicytabDragPolicy 实现方式Java实现fxml实现 组织一组tab的容器&#xff0c;可以设置关闭&#xff0c;拖拽等每个tab内容可以设置不同容器数据 常用属性 padding 内边距&#xff0c;可以单独设置上、下、左、右的内边距 …

webfunny埋点系统如何进行部署?

hello 大家webfunny埋点系统做了不少功能更新&#xff0c;平常给大家分享比较多的是**webfunny前端监控系统**&#xff0c;最近有不少技术同学来了解webfunny埋点系统&#xff0c;今天主要给大家分享下webfunny埋点系统部署&#xff0c;分为本地部署和线上部署。 还没有试用和…

翻译: 可视化深度学习反向传播原理一

本期我们来讲反向传播 也就是神经网络学习的核心算法 稍微回顾一下我们之前讲到哪里之后 首先我要撇开公式不提 直观地过一遍 这个算法到底在做什么 然后如果你们有人想认真看里头的数学 下一期影片我会解释这一切背后的微积分 如果你看了前两期影片 或者你已经有足够背景知…

【文件系统】磁盘的物理结构 | 存储结构

目录 0.前言 1.磁盘的物理结构 1.1什么是二进制&#xff08;0/1&#xff09; 1.2磁盘的存放位置 1.3磁盘的结构 2.磁盘的存储结构 2.1❓数据是怎样在磁盘上存储 2.2❓读写的基本单位是什么 2.3❓如何找到一个指定位置的扇区 2.4❓为什么磁盘的机械结构是这样的 0.前…