Yarn:一个快速、可靠且安全的JavaScript包管理工具
(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,还请三连支持一波哇ヾ(@^∇^@)ノ)

目录
一、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.json的dependencies部分,这意味着这些依赖项在生产环境中也是必需的。如果你希望添加仅在开发过程中使用的依赖项(如测试框架或构建工具),可以使用--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.json和yarn.lock文件中删除该依赖项,并卸载它在node_modules目录中的文件:
yarn remove <package-name>
5. 安装依赖
在项目的生命周期中,你可能会多次需要安装依赖项。Yarn提供了
install命令来安装package.json中列出的所有依赖项。如果你刚刚克隆了一个项目,或者删除了node_modules目录和yarn.lock文件,你需要运行这个命令来恢复项目的依赖项:
yarn install
默认情况下,Yarn会读取
package.json和yarn.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相关文章:
Yarn:一个快速、可靠且安全的JavaScript包管理工具
(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,还请三连支持一波哇ヾ(@^∇^@)ノ) 目录 一、Yarn简介 二、Yarn的安装 1. 使用npm安装Yarn 2. 在macOS上…...
上线前端系统
上线一个静态的前端系统(续) 在eleme服务器上 启动服务 启动rpcbind [rooteleme-static ~]# systemctl restart rpcbind 启动nfs [rooteleme-static ~]# systemctl restart nfs 重启服务 启动smb [rootstatic-server img]# systemctl start smb…...
制作一个不依赖任何基础镜像的docker镜像
1、比如官方提供的hello-world镜像 #docker pull hello-world #docker images hello-world latest feb5d9fea6a5 2 years ago 13.3kB 可以看到这个镜像只有13.3kB 2、# docker run hello-world 只能打印一些信息 3、这个hello-world镜像的dockerfile就下面3行语…...
【拓扑排序topsort】——启动!!!
B3644 【模板】拓扑排序 / 家谱树 #include<bits/stdc.h> #define int long long #define fi first #define se second #define pb push_back #define PII pair<int,int > #define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0) using namespace std; …...
计算机网络-http协议和https的加密原理
HTTP(HyperText Transfer Protocol,超文本传输协议)是用于在万维网(World Wide Web)上传输超文本的基础协议。它定义了客户端(通常是浏览器)和服务器之间的文本数据传输格式和规则。以下是HTTP的…...
共享`pexlinux`数据文件的网络服务
实验环境准备: 1.红帽7主机 2.要全图形安装 3.配置网络为手动,配置网络可用 4.关闭vmware DHCP功能 一、kickstart自动安装脚本制作 1.安装图形化生成kickstart自动脚本安装工具 2.启动图形制作工具 3.图形配置脚本 这里使用的共享方式是http࿰…...
HC32F4A0 10路串口UART 配置
HC32 小华MCU 使用一段时间了,反正芯片BUG 是比较多了,比如串口接收错误后导致再也无法接收,PWM模块无法输出 低电平 , CAN 接收错误导致 输出引脚 CAN_TXD 一直输出脉冲 。。。;好的一面也存在吧,IO 引脚…...
拯救PyCharm:击退IDE崩溃的终极策略
拯救PyCharm:击退IDE崩溃的终极策略 PyCharm,作为开发界的明星IDE之一,以其强大的功能和灵活的定制性深受广大开发者喜爱。然而,即便是这样一款卓越的开发工具,也可能会遇到崩溃的问题,影响开发效率和工作…...
深入解析Unix命令:掌握wc、whereis和which的使用技巧
目录 1. wc命令 2. whereis命令 3. which命令 结论 在Unix和类Unix系统中,wc、whereis和which是三个常用的命令行工具,每个都有着独特的功能和用途。让我们逐个来了解它们的作用和使用方法。 1. wc命令 wc命令是"word count"的缩写&…...
奥运会大规模使用中国AI大模型!
B站:啥都会一点的研究生公众号:啥都会一点的研究生 AI圈最近又发生了啥新鲜事? 巴黎奥运会大规模使用中国 AI 大模型 巴黎奥运会成为一场科技与体育的盛宴,其中包括了大量中国科技的应用。AI 技术将在多个方面发挥作用…...
Linux中的线程3
死锁 在Linux操作系统中,死锁(Deadlock)是指两个或多个进程(或线程)在执行过程中,因互相持有对方所需的资源而又都在等待对方释放资源,导致它们都无法继续执行下去的一种状态。这种僵局会浪费系…...
内网权限维持——利用WMI进行权限维持
文章目录 一、WMI事件订阅机制简介二、利用事件订阅进行权限维持三、防御方式 一、WMI事件订阅机制简介 WMI(Windows Management Instrumentation,Windows管理规范)是windows提供的一种能够直接与系统进行交互的机制,旨在为系统中…...
【数据结构算法经典题目刨析(c语言)】括号匹配问题(图文详解)
💓 博客主页:C-SDN花园GGbond ⏩ 文章专栏:数据结构经典题目刨析(c语言) 目录 一、题目描述 二、解题思路 三、代码实现 一、题目描述 二、解题思路 问题要求将三种类型括号匹配,其中包括顺序匹配和数量匹配 使用栈的后进先…...
浅谈 Spring AOP框架 (1)
文章目录 一、什么是 Spring AOP二、为什么要使用 Spring AOP三、AOP 的一些应用场景四、AOP 的组成五、如何使用 Spring AOP六、Spring AOP 的实现原理6.1、JDK 和 CGLIB 的区别 一、什么是 Spring AOP AOP (Aspect Oriented Programming) :面向切面编程ÿ…...
Linux 面试准备 - 2024
复习一下,资料来自慕课网课程 Linux 速成班和一些网上面试资料。 1. Linux 内核功能 1. 内存管理 2. 进程管理 3. 设备驱动程序 4. 系统调用和安全防护 2. 文件系统 - 一切皆文件 2.1 文件目录 /根目录etc配置文件bin必要命令usr 二级目录(非用户…...
C++笔记---类和对象(中)
1. 类的默认成员函数 默认成员函数就是用户没有显式实现,编译器会自动生成的成员函数称为默认成员函数。 一个类,我们不写的情况下编译器会默认生成以下6个默认成员函数,分别为:构造函数,析构函数,拷贝构…...
【C++】入门基础知识
河流之所以能够到达目的地,是因为它懂得怎样避开障碍。💓💓💓 目录 ✨说在前面 🍋知识点一:C的发展历史 • 🌰1.C发展历史 • 🌰2.C的迭代与更新 • 🌰3.编程语言排…...
AI的应用场景和未来展望
AI(人工智能)的应用场景广泛且多样,已经深入到我们生活的方方面面,成为现代社会不可或缺的一部分。 AI的应用场景 1、通用软件与工具型应用 办公软件:如钉钉、飞书等,通过AI技术提供内容生成与摘要、智能…...
vim、sublime、notepad文本编辑器的使用
VIM: Windows上配置gvim并作为C和C的IDE Windows上配置gvim并作为C和C的IDE | Reasuon sublime notepad...
PyCharm中的外部更改识别:终极解决方案指南
标题:PyCharm中的外部更改识别:终极解决方案指南 引言 PyCharm,作为JetBrains公司开发的集成开发环境(IDE),以其强大的功能和高效的代码编辑体验而广受开发者喜爱。然而,在开发过程中…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...
云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...
java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别
UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...
聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...
MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
