【yarn】使用 Yarn 进行包管理:安装与配置指南


准我快乐地重饰演某段美丽故事主人
饰演你旧年共寻梦的恋人
再去做没流着情泪的伊人
假装再有从前演过的戏份
重饰演某段美丽故事主人
饰演你旧年共寻梦的恋人
你纵是未明白仍夜深一人
穿起你那无言毛衣当跟你接近
                     🎵 陈慧娴《傻女》


Yarn 是一个快速、可靠和安全的 JavaScript 包管理器,由 Facebook 开发和维护。它提供了一种更快、更一致和更安全的方式来管理项目的依赖。本文将详细介绍如何安装和配置 Yarn,以便在项目中使用它进行包管理。

为什么选择 Yarn?

  • 速度快:Yarn 通过并行化操作来提升性能,同时利用缓存机制加速重复安装。
  • 一致性:Yarn 通过锁文件 (yarn.lock) 确保每次安装依赖包时版本的一致性。
  • 安全性:Yarn 通过校验每个安装包的完整性来提高安全性。
  • 离线模式:Yarn 允许在没有网络连接的情况下安装依赖,只要这些依赖包之前已被下载并缓存。

安装 Yarn

通过 npm 安装

如果已经安装了 Node.js 和 npm,可以通过 npm 直接安装 Yarn:

npm install --global yarn
通过安装包安装

也可以通过安装包来安装 Yarn。首先,从 Yarn 的官方网站 下载适用于操作系统的安装包,然后根据提示进行安装。

验证安装

安装完成后,可以通过以下命令来验证 Yarn 是否安装成功:

yarn --version

如果安装成功,会显示 Yarn 的版本号。

配置 Yarn

初始化项目

在使用 Yarn 管理项目依赖之前,需要先初始化项目。在项目根目录运行以下命令:

yarn init

这会启动一个交互式的命令行工具,询问你一些关于项目的问题,比如名称、版本、描述等。填写完这些信息后,会生成一个 package.json 文件,用于描述项目的依赖和元数据。

添加依赖

可以使用 yarn add 命令添加项目依赖。例如,要添加 react 和 react-dom,运行以下命令:

yarn add react react-dom

这会将依赖添加到 package.json 文件,并生成一个 yarn.lock 文件,用于锁定依赖版本。

移除依赖

可以使用 yarn remove 命令移除项目依赖。例如,要移除 react 依赖,运行以下命令:

yarn remove react
升级依赖

可以使用 yarn upgrade 命令升级依赖。例如,要升级所有依赖,运行以下命令:

yarn upgrade

使用 Yarn 管理脚本

package.json 文件中可以定义脚本,以便在项目中执行常见任务。例如,定义一个启动脚本:

{"scripts": {"start": "node index.js"}
}

然后可以通过以下命令运行这个脚本:

yarn start

配置 Yarn 工作空间

Yarn 工作空间是 Yarn 的一个强大功能,允许你在一个单一的仓库中管理多个包。它使得在 monorepo 中管理依赖变得更加容易和高效。

初始化工作空间
首先,在 package.json 中启用工作空间:

{"private": true,"workspaces": ["packages/*"]
}

然后,创建 packages 目录,并在其中添加子包。例如,添加 package-a 和 package-b:

mkdir -p packages/package-a packages/package-b

在每个子包中初始化 package.json 文件:

cd packages/package-a
yarn init -ycd ../package-b
yarn init -y
安装工作空间依赖

在工作空间中添加依赖时,Yarn 会自动将依赖链接到顶层 node_modules 目录,从而避免重复安装。例如,在 package-a 中添加 lodash 依赖:

cd packages/package-a
yarn add lodash

配置 Yarn 镜像源

如果你在国内使用 Yarn,可以配置镜像源以加快依赖包的下载速度。可以通过以下命令将 Yarn 镜像源设置为淘宝镜像:

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

结论

Yarn 是一个强大且高效的包管理工具,通过其快速、安全和一致的特性,极大地提升了项目依赖管理的体验。通过本文的介绍,你应该已经掌握了 Yarn 的安装和基本配置方法。希望这篇博客能帮助你更好地使用 Yarn。如果你有任何问题或需要进一步的帮助,请随时联系我。Happy Coding!

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

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

相关文章

【代码管理的必备工具:Git的基本概念与操作详解】

一、Git 初识 1.提出问题 不知道你工作或学习时,有没有遇到这样的情况:我们在编写各种⽂档时,为了防止⽂档丢失,更改失误,失误后能恢复到原来的版本,不得不复制出⼀个副本,比如: “…

Django之登录权限系统

本文参考链接django之auth模块(用户认证) - chchcharlie、 - 博客园 (cnblogs.com) 执行完迁移命令,会自动生成admin表,迁移命令如下: python manage.py makemigrations python manage.py migrate 相关模块 from django.contrib …

敏感词匹配DFA算法

算法简介与场景介绍 DFA算法,中文全称为确定性有穷自动机。它的基本思想是构建一个有穷自动机,当用户输入文本时,通过自动机的状态转换来快速匹配敏感词。具体特征是,有一个有效状态的集合和一些从一个状态通向另一个状态的边&am…

大模型面试(二)

这次又接到一个大模型岗位的面试。但是从面试过程来看,现在大模型岗位都要求有相关工作经验,还是太难进了。还是说国内公司早就过了培养人的年代了? 问到了哪些知识点: 开源大模型:项目里用的是浦语大模型&#xff0…

VuePress 的更多配置

现在,读者应该对 VuePress、主题和插件等有了基本的认识,除了插件,VuePress 自身也有很多有用的配置,这里简单说明下。 ‍ ‍ VuePress 的介绍 在介绍了 VuePress 的基本使用、主题和插件的概念之后,我们再来看看官…

简介空间复杂度

我们承接上一篇博客。我们写了时间复杂度之后,我们就要来介绍一下另一个相关复杂度了。空间复杂度。我觉得大家应该对空间复杂度认识可能比较少一些。我就是这样,我很少看见题目中有明确要求过空间复杂度的。但确实有这个是我们不可忽视的,所…

PXIe-7976【K410T】

起售价 RMB 152,880.00 块RAM(BRAM): 28620 kbit 动态RAM(DRAM): 2 GB FPGA: Kintex-7 410T PXI背板链路: PCI-Express Gen2 x 8 FPGA片: 63550 DSP片: 1540

文本关系抽取实战

数据与源码地址见文末 1.文本关系抽取要完成的任务 文本关系抽取是自然语言处理领域的一个重要任务,其主要目的是从非结构化的文本数据中自动识别和提取出实体之间的关系。这个过程可以分为以下几个关键步骤和目标: 实体识别:首先需要识别出文本中的关键实体,这些实体可以…

ChatGPT-4o大语言模型优化、本地私有化部署、从0-1搭建、智能体构建等高级进阶

目录 第一章 ChatGPT-4o使用进阶 第二章 大语言模型原理详解 第三章 大语言模型优化 第四章 开源大语言模型及本地部署 第五章 从0到1搭建第一个大语言模型 第六章 智能体(Agent)构建 第七章 大语言模型发展趋势 第八章 总结与答疑讨论 更多应用…

昇思25天学习打卡营第12天|FCN图像语义分割

文章目录 昇思MindSpore应用实践基于MindSpore的FCN图像语义分割1、FCN 图像分割简介2、构建 FCN 模型3、数据预处理4、模型训练自定义评价指标 Metrics 5、模型推理结果 Reference 昇思MindSpore应用实践 本系列文章主要用于记录昇思25天学习打卡营的学习心得。 基于MindSpo…

LaTeX教程(014)-LaTeX文档结构(14)

LaTeX教程(014)- LaTeX \LaTeX LATE​X文档结构(14) 2.3.3 multitoc - 将目录设置为多栏 multitoc包的使用方法相当简单,只需要调用这个包,并将要设置为多栏(默认是双栏)的目录指定到包选项中即可。如\usepackage[toc]{multitoc},设置的就是…

[python技巧]OmegaConf调用配置文件

在https://blog.csdn.net/qq_43235540/article/details/140250813?spm1001.2014.3001.5502中介绍了parser的使用方法,一般传入参数和是配置文件一起使用,配置. OmegaConf.load() 从.yaml文件读取配置 opt, unknown parser.parse_known_args() configs [OmegaConf.load(cf…

Springboot使用WebSocket发送消息

1. 创建springboot项目&#xff0c;引入spring-boot-starter-websocket依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId></dependency>完整项目依赖 <?xml ver…

Vue 使用 @click 绑定点击事件

https://andi.cn/page/621505.html

Python【打包exe文件两步到位】

Python打包Exe 安装 pyinstaller&#xff08;pip install pyinstaller&#xff09; 执行打包命令&#xff08;pyinstaller demo.py&#xff09; 打完包会生成 dist 文件夹&#xff0c;如下如

基于开源AI数据框架LlamaIndex构建上下文增强型LLA应用

引言 “将你的企业数据转化为可用于实际生产环境的LLM应用程序&#xff0c;”LlamaIndex主页用60号字体这样高亮显示。其副标题是“LlamaIndex是构建LLM应用程序的领先数据框架。”我不太确定它是否是业内领先的数据框架&#xff0c;但我认为它是一个与LangChain和Semantic Ker…

快行线冷链——创新仓配、共赢未来 主题沙龙在京成功举办

2024年7月7日下午&#xff0c;由京营建联盟、北京市大兴区餐饮行业协会、北京快行线冷链物流联合主办的“创新仓配&#xff0c;共赢未来——相信拥抱的力量”主题沙龙活动在北京篝野城市露营空间隆重举行。本次活动定向邀请了餐饮老板、餐饮企业供应链负责人及冻品经销商和相关…

电子电气架构 --- 智能座舱万物互联

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…

SpringSecurity在SpringBoot中的自动装配

从SpringBoot的自动装配原理入手 找到META-INFO下的spring.factories文件 SpringSecurity作为Spring的亲儿子&#xff0c;自然在spring-boot-autoconfigure下的spring.factories文件中配置了 org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfigurat…

C语言指针函数指针

跟着这篇文章重新理解了一下&#xff1a;彻底攻克C语言指针 有一个例子感觉可以拿出来看看&#xff1a; char *(*c[10])(int **p); * 这段声明定义了一个长度为10的数组c&#xff0c;数组中的每个元素都是指向函数的指针。每个函数接受一个类型为int **&#xff08;指向指向…