yarn的安装和配置以及更新总结,npm的对照使用差异
1. Yarn简介
Yarn 是一个由 Facebook 开发的现代 JavaScript 包管理器,旨在提供更快、更安全、更可靠的包管理体验。
1.1 什么是Yarn
Yarn 是一个快速、可靠和安全的 JavaScript 包管理器,它通过并行化操作和智能缓存机制,显著提升了依赖安装的速度。Yarn 还提供了离线支持,即使在没有网络的情况下,也能安装依赖包。此外,Yarn 使用 yarn.lock
文件锁定依赖版本,确保在不同环境中安装的依赖包版本一致,避免了“在我这能运行”的问题。
1.2 Yarn的主要特点
Yarn 的主要特点包括:
- 速度快:Yarn 通过并行化操作,使得依赖安装速度远超传统的 npm 包管理器。
- 离线模式:Yarn 支持离线模式,可以在没有网络的情况下安装依赖,因为它会缓存之前下载过的包。
- 确定性:Yarn 使用
yarn.lock
文件确保每次安装的依赖版本一致,无论在哪个系统或何时安装。 - 安全性:Yarn 在安装包之前会检查其完整性,确保包没有被篡改。
- 更好的语义化:Yarn 的命令和输出信息更友好、更易读,方便开发人员理解和使用。
- 跨平台兼容性:Yarn 可以在多种操作系统上运行,包括 Windows、macOS 和 Linux,确保了广泛的适用性和一致性。
2. Yarn的安装
2.1 在不同操作系统上的安装方法
Yarn支持跨平台安装,包括Windows、macOS、Linux等操作系统。以下是针对不同操作系统的安装指南:
-
Windows: 在Windows系统上,可以通过以下两种方式安装Yarn:
- 使用npm:运行命令
npm install --global yarn
来安装Yarn。 - 使用Chocolatey:如果已经安装了Chocolatey,可以通过
choco install yarn
命令进行安装。
- 使用npm:运行命令
-
macOS: 在macOS上,推荐使用Homebrew进行安装,使用命令
brew install yarn
。 -
Linux (Ubuntu/Debian): 在基于Debian的系统上,可以添加Yarn的官方仓库并使用
apt
进行安装: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
-
Linux (CentOS/RHEL): 在基于RPM的系统上,可以添加Yarn的官方仓库并使用
yum
进行安装:curl -sL https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo sudo yum install yarn
2.2 通过npm安装Yarn
npm是Node.js的包管理器,Yarn可以通过npm进行安装。这是Yarn官方推荐的安装方法,因为它确保了Yarn与Node.js的兼容性。以下是通过npm安装Yarn的步骤:
- 确保系统中已安装Node.js,可以通过运行
node -v
和npm -v
来检查Node.js和npm的版本。 - 使用npm全局安装Yarn,运行命令
npm install --global yarn
。 - 安装完成后,可以通过运行
yarn --version
来验证Yarn是否安装成功。
通过npm安装Yarn是一种简单且跨平台的方法,适用于大多数操作系统。安装完成后,就可以开始使用Yarn来管理JavaScript项目的依赖了。
3. Yarn的配置
3.1 配置环境变量
配置环境变量是确保Yarn能够全局访问的关键步骤。在Unix-like系统(包括Linux和macOS)中,通常需要编辑shell配置文件,如.bashrc
、.zshrc
或.profile
。例如,在.bashrc
文件中添加以下行:
export PATH="$PATH:$(yarn global bin)"
在Windows系统中,可以通过系统属性中的环境变量设置来添加Yarn的安装路径到PATH
变量。确保Yarn的可执行文件路径被添加到PATH
中,使得可以在命令行中直接调用yarn
命令。
3.2 设置国内镜像源
由于网络问题,直接使用npm官方源在中国大陆可能会遇到访问速度慢或无法访问的问题。Yarn支持设置镜像源以加速包的下载。以下是设置国内镜像源的步骤:
-
使用淘宝的npm镜像作为Yarn的registry,可以通过以下命令设置:
yarn config set registry https://registry.npm.taobao.org
这将使得Yarn在安装包时使用淘宝的镜像源,显著提高下载速度。
-
如果需要使用其他镜像源,如
npmmirror
或cnpm
,可以通过替换URL来设置:yarn config set registry https://registry.npmmirror.com # 或者 yarn config set registry https://r.cnpmjs.org
-
查看当前Yarn配置,确保镜像源设置正确:
yarn config list
通过以上步骤,可以确保Yarn在使用过程中能够享受到更快的下载速度,特别是在中国大陆地区。同时,合理配置环境变量能够提高开发效率,确保开发环境的稳定性。
4. Yarn常用命令
4.1 安装依赖
Yarn提供了多种方式来安装项目依赖,以确保开发环境的一致性和稳定性。
yarn install
:这是最常用的命令,用于根据package.json
和yarn.lock
文件安装所有依赖。如果yarn.lock
文件存在,Yarn将确保安装与锁文件中记录的确切版本相同的依赖,从而保证不同环境下的一致性。yarn install --flat
:此命令安装所有依赖,但每个包只允许一个版本。首次运行时,如果存在多个版本范围的依赖,Yarn会提示选择一个版本,并将选择的版本添加到package.json
的resolutions
字段中。yarn install --production
:在生产环境中,此命令将忽略devDependencies
,只安装生产所需的依赖,加快安装速度并减小安装包体积。
4.2 添加和删除依赖
Yarn允许开发者灵活地管理项目依赖,包括添加和删除操作。
yarn add [package]
:添加新依赖到dependencies
字段。如果需要添加开发时依赖,可以使用--dev
或-D
标志,将依赖添加到devDependencies
。yarn remove [package]
:从package.json
中删除指定的依赖,并清理node_modules
目录中对应的文件。
4.3 其他常用命令
除了基本的依赖管理,Yarn还提供了一些其他提高开发效率的命令。
yarn upgrade [package]
:升级指定的依赖包到最新版本。如果使用yarn upgrade --latest
,则升级所有包到最新版本。yarn upgrade-interactive
:交互式升级依赖,允许开发者选择要升级的依赖版本。yarn run [script]
:运行在package.json
的scripts
字段定义的脚本。例如,yarn run test
可以运行测试脚本。yarn global add [package]
:将包安装到全局,使其在任何项目中都可用。yarn cache clean
:清理Yarn缓存,释放磁盘空间。在升级Yarn或解决某些安装问题时,这个命令可能会用到。
通过这些命令,Yarn为JavaScript项目的依赖管理提供了强大而灵活的工具,帮助开发者更高效地进行开发和维护。
5. npm与Yarn命令比较
5.1 依赖版本控制差异
Yarn 和 npm 在依赖版本控制方面有显著的不同。Yarn 引入了 yarn.lock
文件,该文件记录了项目依赖的确切版本,确保了在不同开发环境中安装的依赖版本一致性。这避免了 npm 中常见的版本冲突问题,因为 npm 通常依赖于 package.json
中的语义化版本号,这可能导致在不同时间安装依赖时获取到的版本不一致。
- Yarn: 使用
yarn.lock
文件锁定依赖版本,确保在所有环境中的一致性。 - npm: 依赖于
package.json
中的语义化版本号,可能在不同时间安装时获取不同版本。
5.2 命令使用差异
Yarn 和 npm 的命令使用也存在一些差异,这些差异体现在安装依赖、添加依赖、更新依赖等方面。
-
安装依赖:
- Yarn: 使用
yarn install
命令安装依赖,并且默认生成yarn.lock
文件。 - npm: 使用
npm install
命令安装依赖,可以通过npm install --package-lock-only
来生成package-lock.json
文件。
- Yarn: 使用
-
添加依赖:
- Yarn: 使用
yarn add [package]
命令添加依赖,并更新yarn.lock
文件。 - npm: 使用
npm install [package]
命令添加依赖,并更新package-lock.json
文件。
- Yarn: 使用
-
更新依赖:
- Yarn: 使用
yarn upgrade [package]
命令更新依赖,同时保持yarn.lock
文件的一致性。 - npm: 使用
npm update [package]
命令更新依赖,同时更新package-lock.json
文件。
- Yarn: 使用
-
移除依赖:
- Yarn: 使用
yarn remove [package]
命令移除依赖,并更新yarn.lock
文件。 - npm: 使用
npm uninstall [package]
命令移除依赖,并更新package-lock.json
文件。
- Yarn: 使用
-
全局安装:
- Yarn: 使用
yarn global add [package]
命令全局安装依赖。 - npm: 使用
npm install -g [package]
命令全局安装依赖。
- Yarn: 使用
这些命令使用上的差异反映了 Yarn 和 npm 在设计理念和使用习惯上的不同,开发者可以根据个人喜好和项目需求选择合适的包管理工具。
6. 检查Yarn安装
6.1 验证安装是否成功
安装完成后,需要验证Yarn是否安装成功。可以通过在终端或命令提示符中执行以下命令来检查:
yarn --version
如果终端输出了Yarn的版本号,这表明Yarn已经成功安装在您的系统上。
6.2 检查Yarn的全局安装路径
Yarn的全局安装路径可以通过以下命令查看:
yarn global dir
该命令将显示Yarn全局安装包的路径,确保您知道Yarn包被安装在哪里。
6.3 检查Yarn的配置信息
使用以下命令可以查看Yarn的所有配置信息,包括镜像源、缓存路径等:
yarn config list
这个命令会列出当前Yarn的配置,您可以检查是否已经按照您的需求进行了相应的配置。
6.4 检查Yarn的依赖管理
Yarn使用yarn.lock
文件来锁定依赖项的版本,确保在不同环境中的依赖一致性。您可以检查项目根目录下是否存在yarn.lock
文件:
ls yarn.lock
如果存在,说明依赖项已经被锁定,这有助于团队协作和持续集成流程中的稳定性。
6.5 检查Yarn的插件和扩展
Yarn支持插件系统,可以通过以下命令查看已安装的插件:
yarn plugins list
如果列出了插件,说明Yarn已经配置了额外的功能扩展,可以根据需要使用这些插件来增强Yarn的功能。
7. 升级Yarn
升级Yarn是确保你能够使用最新功能和安全更新的重要步骤。Yarn会定期发布新版本,包括性能改进、新特性以及安全修复。
7.1 升级方法
升级Yarn的主要方法有两种:通过npm和使用Yarn自己的命令。
-
通过npm升级:由于Yarn是通过npm安装的,因此可以使用npm命令来升级Yarn到最新版本。
npm install -g yarn
-
使用Yarn升级:如果系统中已经安装了Yarn,可以使用Yarn提供的命令来升级自身。
yarn set version latest yarn install
7.2 升级注意事项
在升级Yarn之前,需要注意以下几点:
-
备份:在升级之前,建议备份你的项目和全局配置,以防万一升级过程中出现问题。
-
检查依赖:升级Yarn可能会影响你的项目依赖,确保在升级后重新运行
yarn install
来安装最新的依赖版本。 -
测试:在生产环境中升级之前,建议在开发或测试环境中先进行升级,确保新版本不会影响现有功能。
7.3 升级流程
升级Yarn的一般流程如下:
- 查看当前版本:使用命令
yarn --version
来查看当前Yarn的版本。 - 获取最新版本:通过上述任一方法获取Yarn的最新版本。
- 验证安装:升级完成后,再次使用
yarn --version
来验证是否升级成功。 - 更新项目依赖:运行
yarn install
来确保所有依赖都是最新的,并且与新版本的Yarn兼容。
7.4 升级后的验证
升级后,可以通过以下方式验证Yarn是否正常工作:
- 运行项目:尝试运行你的项目,确保一切正常运行。
- 检查依赖:查看
package.json
和yarn.lock
文件,确保所有依赖都已正确安装。 - 使用Yarn命令:尝试使用一些常用的Yarn命令,如
yarn add
、yarn remove
等,以确保命令行工具的功能正常。
通过上述步骤,你可以确保Yarn的升级过程顺利,并且不会影响你的开发工作。
如果这篇文章对你有所帮助,欢迎点赞、分享和留言,让更多的人受益。感谢你的细心阅读,如果你发现了任何错误或需要补充的地方,请随时告诉我,我会尽快处理。
相关文章:
yarn的安装和配置以及更新总结,npm的对照使用差异
1. Yarn简介 Yarn 是一个由 Facebook 开发的现代 JavaScript 包管理器,旨在提供更快、更安全、更可靠的包管理体验。 1.1 什么是Yarn Yarn 是一个快速、可靠和安全的 JavaScript 包管理器,它通过并行化操作和智能缓存机制,显著提升了依赖安…...
【Git命令】git rebase之合并提交记录
使用场景 在本地提交了两个commit,但是发现根本没有没必要分为两次,需要想办法把两次提交合并成一个提交;这个时候可以使用如下命令启动交互式变基会话: git rebase -i HEAD~N这里 N 是你想要重新调整的最近的提交数。 如下在本地…...
为什么品牌需要做 IP 形象?
品牌做IP形象的原因有多方面,这些原因共同构成了IP形象在品牌建设中的重要性和价值,主要原因有以下几个方面: 增强品牌识别度与记忆点: IP形象作为品牌的视觉符号,具有独特性和辨识性,能够在消费者心中留…...
Kubernetes 1.24 版弃用 Dockershim 后如何迁移到 containerd 和 CRI-O
在本系列的上一篇文章中,我们讨论了什么是 CRI 和 OCI,Docker、containerd、CRI-O 之间的区别以及它们的架构等。最近,我们得知 Docker 即将从 kubernetes 中弃用!(查看 kubernetes 官方的这篇文章)那么让我…...
70. 爬楼梯【 力扣(LeetCode) 】
一、题目描述 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 二、测试用例 示例 1: 输入:n 2 输出:2 解释:有两种方法可以爬到楼顶。 1. 1 阶…...
R语言优雅的把数据基线表(表一)导出到word
基线表(Baseline Table)是医学研究中常用的一种数据表格,用于在研究开始时呈现参与者的初始特征和状态。这些特征通常包括人口统计学数据、健康状况和疾病史、临床指标、实验室检测、生活方式、社会经济等。 本人在既往文章《scitb包1.6版本发…...
XMl基本操作
引言 使⽤Mybatis的注解⽅式,主要是来完成⼀些简单的增删改查功能. 如果需要实现复杂的SQL功能,建议使⽤XML来配置映射语句,也就是将SQL语句写在XML配置⽂件中. 之前,我们学习了,用注解的方式来实现MyBatis 接下来我们…...
Linux——Shell脚本和Nginx反向代理服务器
1. Linux中的shell脚本【了解】 1.1 什么是shell Shell是一个用C语言编写的程序,它是用户使用Linux的桥梁 Shell 既是一种命令语言,有是一种程序设计语言 Shell是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问…...
pyspark使用 graphframes创建和查询图的方法
1、安装graphframes的步骤 1.1 查看 spark 和 scala版本 在终端输入: spark-shell --version 查看spark 和scala版本 1.2 在maven库中下载对应版本的graphframes https://mvnrepository.com/artifact/graphframes/graphframes 我这里需要的是spark 2.4 scala 2.…...
【web】-flask-简单的计算题(不简单)
打开页面是这样的 初步思路,打开F12,查看头,都发现了这个表达式的base64加密字符串。编写脚本提交答案,发现不对; 无奈点开source发现源代码,是flask,初始化表达式,获取提交的表达式࿰…...
Apache Sqoop
Apache Sqoop是一个开源工具,用于在Apache Hadoop和关系型数据库(如MySQL、Oracle、PostgreSQL等)之间进行数据的批量传输。其主要功能包括: 1. 数据导入:从关系型数据库(如MySQL、Oracle等)中将…...
【Python】TensorFlow介绍与实战
TensorFlow介绍与使用 1. 前言 在人工智能领域的快速发展中,深度学习框架的选择至关重要。TensorFlow 以其灵活性和强大的社区支持,成为了许多研究者和开发者的首选。本文将进一步扩展对 TensorFlow 的介绍,包括其优势、应用场景以及在最新…...
第100+16步 ChatGPT学习:R实现Xgboost分类
基于R 4.2.2版本演示 一、写在前面 有不少大佬问做机器学习分类能不能用R语言,不想学Python咯。 答曰:可!用GPT或者Kimi转一下就得了呗。 加上最近也没啥内容写了,就帮各位搬运一下吧。 二、R代码实现Xgboost分类 (…...
【操作系统】定时器(Timer)的实现
这里写目录标题 定时器一、定时器是什么二、标准库中的定时器三、实现定时器 定时器 一、定时器是什么 定时器也是软件开发中的⼀个重要组件.类似于⼀个"闹钟".达到⼀个设定的时间之后,就执行某个指定 好的代码. 定时器是⼀种实际开发中⾮常常用的组件. ⽐如⽹络通…...
鸿蒙Navigation路由能力汇总
基本使用步骤: 1、新增配置文件router_map: 2、在moudle.json5中添加刚才新增的router_map配置: 3、使用方法: 属性汇总: https://developer.huawei.com/consumer/cn/doc/harmonyos-references/ts-basic-compone…...
1:1公有云能力整体输出,腾讯云“七剑”下云端
【全球云观察 | 科技热点关注】 曾几何时,云计算技术的兴起,为千行万业的数字化创新带来了诸多新机遇,同时也催生了新产业新业态新模式,激发出高质量发展的科技新动能。很显然,如今的云创新已成为高质量发…...
【iOS】APP仿写——网易云音乐
网易云音乐 启动页发现定时器控制轮播图UIButtonConfiguration 发现换头像 我的总结 启动页 这里我的启动页是使用Xcode自带的启动功能,将图片放置在LaunchScreen中即可。这里也可以通过定时器控制,来实现启动的效果 效果图: 这里放一篇大…...
react 快速入门思维导图
在掌握了react中一下的几个步骤和语法,基本上就可以熟练的使用react了。 1、组件的使用。react创建组件主要是类组件和函数式组件,类组件有生命周期,而函数式组件没有。 2、jsx语法。react主要使用jsx语法,需要使用babel和webpa…...
微软研究人员为电子表格应用开发了专用人工智能LLM
微软的 Copilot 生成式人工智能助手现已成为该公司许多软件应用程序的一部分。其中包括 Excel 电子表格应用程序,用户可以在其中输入文本提示来帮助处理某些选项。微软的一组研究人员一直在研究一种新的人工智能大型语言模型,这种模型是专门为 Excel、Go…...
[算法题]两个链表的第一个公共结点
题目链接: 两个链表的第一个公共结点 图示: 两个链表如果长度一致, 那么两人同时一人走一步, 如果存在公共结点, 迟早会相遇, 但是如果长度不一致单存在公共结点, 两人同时一人走一步不会相遇, 此时定义两个变量, node1 和 node2, 这两个变量分别从 x1 和 x2 开始走, 当其走完…...
MySQL事务管理(上)
目录 前言 CURD不加控制,会有什么问题? CURD满足什么属性,能解决上述问题? 事务 什么是事务? 为什么会出现事务 事务的版本支持 事务提交方式 查看事务提交方式 改变 MySQL 的自动提交模式: 事务常见操作方式 前…...
HTML2048小游戏
源代码在效果图后面 效果图 源代码 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>2048 Game&l…...
为 android编译 luajit库、 交叉编译
时间:20200719 本机环境:iMac2017 macOS11.4 参考: 官方的文档:Use the NDK with other build systems 写在前边:交叉编译跟普通编译类似,无非是利用特殊的编译器、链接器生成动态或静态库; make 本质上是按照 Make…...
【音视频】音频重采样
文章目录 前言音频重采样的基本概念音频重采样的原因1. 设备兼容性2. 文件大小和带宽3. 音质优化4. 标准化和规范5. 多媒体同步6. 降低处理负载重采样的注意事项 总结 前言 音频重采样是指将音频文件的采样率转换成另一种采样率的过程。这在音频处理和传输中是一个常见且重要的…...
卷积神经网络学习问题总结
问题一: 深度学习中的损失函数和应用场景 回归任务: 均方误差函数(MSE)适用于回归任务,如预测房价、预测股票价格等。 import torch.nn as nn loss_fn nn.MSELoss() 分类任务: 交叉熵损失函数&…...
嵌入式面试总结
C语言中struct和union的区别 struct和union都是常见的复合结构。 结构体和联合体虽然都是由多个不同的数据类型成员组成的,但不同之处在于联合体中所有成员共用一块地址空间,即联合体只存放了一个被选中的成员,结构体中所有成员占用空间是累…...
超简单安装指定版本的clickhouse
超简单安装指定版本的clickhouse 命令执行shell脚本 idea连接 命令执行 参考官网 # 下载脚本 wget https://raw.githubusercontent.com/183461750/doc-record/d988dced891d70b23c153a3bbfecee67902a3757/middleware/data/clickhouse/clickhouse-install.sh # 执行安装脚本(中…...
FlowUs横向对比几款笔记应用的优势所在
FlowUs作为一个本土化的生产力工具,在中国市场的环境下相对于Notion有其独特的优势,尤其是在稳定性和模板适应性方面。 尽管Notion在笔记和生产力工具领域享有极高的声誉,拥有着诸多创新功能和强大的生态系统,但它并不一定适合每…...
收银系统源码-千呼新零售收银视频介绍
千呼新零售2.0系统是零售行业连锁店一体化收银系统,包括线下收银线上商城连锁店管理ERP管理商品管理供应商管理会员营销等功能为一体,线上线下数据全部打通。 适用于商超、便利店、水果、生鲜、母婴、服装、零食、百货、宠物等连锁店使用。 详细介绍请…...
从Catalog说到拜义父-《分析模式》漫谈11
DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 “Analysis Patterns”的Preface(前言)有这么一句: This book is thus a catalog, rather than a book to be read from cover to cover. 2004&am…...
招商加盟项目推荐/网站seo技术能不能赚钱
经常有人问我,没有编程经验的人该如何开始开发游戏。在此之前,我总是一个个的尽力回答。然而,后来提相同问题的人数增长到难以处理的地步。我决定,是时候把我所有的建议写成文章,作为一个大概。这 篇文章是针对那些想要…...
网站建设内容大全/网页设计软件有哪些
前言在爬取https网站的时候,今天遇到了一个之前没有见过的异常javax.net.ssl.SSLHandshakeException,具体细节请看如图2020-06-01 23:18:17.032 DEBUG org.springframework.web.servlet.DispatcherServlet- Successfully completed requestjavax.net.ssl…...
国外做vj的网站/永州网络推广
前言: 视觉小车最重要的是视觉功能,其实现方式主要有: Opencv外置计算机摄像头。需要计算机作为上位机。Stm32OV7670。较难,大师级。OpenMV摄像头。较简单,入门级。 博主刚开始为了准备项目,了解尝试过前…...
wordpress手动搬家问题/优秀营销软文100篇
描述 输出一个整数序列中与指定数字相同的数的个数。 输入 输入包含2行: 第1行为N和m,表示整数序列的长度(N < 100)和指定的数字, 中间用一个空格分开; 第2行为N个整数,整数之间以一个空格分开。 输出 输出为N…...
国外网站建设软件有哪些/东莞网络推广托管
在进行Linux 操作的时候,我们常常需要反选操作,下面以删除文件的场景,去示例如何在Linux 命令中使用反选操作反选操作的几种思路1.利用 grep -v 反选操作 (推荐,支持正则表达式)2.shopt -s extglob (打开extglob模式)&#…...
做购物网站数据库分析/网络营销软文范文
1.明确终端服务的2种模式 ----Windows 2000终端服务有2种运行模式: 远程管理模式和应用程序服务器模式。远程管理模式允许系统管理员远程管理服务器,而且只允许2个终端会话同时登录终端服务器。应用程序服务器模式允许用户运行一个以上应用程序ÿ…...