【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 -y

cd ../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.mfbz.cn/a/781951.html

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

相关文章

【若依前后端分离】通过输入用户编号自动带出部门名称(部门树)

一、部门树 使用 <treeselect v-model"form.deptId" :options"deptOptions" :show-count"true" placeholder"请选择归属部门"/> <el-col :span"12"><el-form-item label"归属部门" prop"dept…

QT5.14.2与Mysql8.0.16配置笔记

1、前言 我的QT版本为 qt-opensource-windows-x86-5.14.2。这是QT官方能提供的自带安装包的最近版本&#xff0c;更新的版本需要自己编译源代码&#xff0c;可点击此链接进行下载&#xff1a;Index of /archive/qt/5.14/5.14.2&#xff0c;选择下载 qt-opensource-windows-x86…

【机器学习】基于线性回归的医疗费用预测模型

文章目录 一、线性回归定义和工作原理假设表示 二、导入库和数据集矩阵表示可视化 三、成本函数向量的内积 四、正态方程五、探索性数据分析描述性统计检查缺失值数据分布图相关性热图保险费用分布保险费用与性别和吸烟情况的关系保险费用与子女数量的关系保险费用与地区和性别…

Halcon 铣刀刀口破损缺陷检测

一 OTSU OTSU&#xff0c;是一种自适应阈值确定的方法,又叫大津法&#xff0c;简称OTSU&#xff0c;是一种基于全局的二值化算法,它是根据图像的灰度特性,将图像分为前景和背景两个部分。当取最佳阈值时&#xff0c;两部分之间的差别应该是最大的&#xff0c;在OTSU算法中所采…

张量分解(2)——张量运算(内积、外积、直积、范数)

&#x1f345; 写在前面 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;这里是hyk写算法了吗&#xff0c;一枚致力于学习算法和人工智能领域的小菜鸟。 &#x1f50e;个人主页&#xff1a;主页链接&#xff08;欢迎各位大佬光临指导&#xff09; ⭐️近…

Stream流真的很好,但答应我别用toMap()

你可能会想&#xff0c;toList 和 toSet 都这么便捷顺手了&#xff0c;当又怎么能少得了 toMap() 呢。 答应我&#xff0c;一定打消你的这个想法&#xff0c;否则这将成为你噩梦的开端。 让我们先准备一个用户实体类。 Data AllArgsConstructor public class User { priv…

【C#】函数方法、属性分文件编写

1.思想 分文件编写是面向对象编程的重要思想&#xff0c;没有实际项目作为支撑很难理解该思想的精髓&#xff0c;换言之&#xff0c;一两个函数代码量因为太少无法体现分文件编写减少大量重复代码的优势。 2.项目结构介绍 整项目的名称叫AutoMetadata&#xff0c;是一个基于W…

【第三版 系统集成项目管理工程师】第4章 信息系统架构

持续更新。。。。。。。。。。。。。。。 【第三版】系统集成项目管理工程师 考情分析4.1架构基础4.1.1指导思想&#xff08;非重点&#xff09; P1364.1.2设计原则&#xff08;非重点&#xff09; P1364.1.3建设目标&#xff08;非重点&#xff09; P1374.1.4总体框架 P138练习…

【web前端HTML+CSS+JS】--- CSS学习笔记02

一、CSS&#xff08;层叠样式表&#xff09;介绍 1.优势 2.定义解释 如果有多个选择器共同作用的话&#xff0c;只有优先级最高那层样式决定最终的效果 二、无语义化标签 div和span&#xff1a;只起到描述的作用&#xff0c;不带任何样式 三、标签选择器 1.标签/元素选择器…

什么牌子的头戴式蓝牙耳机好性价比高?

说起性价比高的头戴式蓝牙耳机,就不得不提倍思H1s,作为倍思最新推出的新款,在各项功能上都实现了不错的升级,二字开头的价格,配置却毫不含糊, 倍思H1s的音质表现堪称一流。它采用了40mm天然生物纤维振膜,这种振膜柔韧而有弹性,能够显著提升低音的量感。无论是深沉的低音还是清…

Android 10年,35岁,该往哪个方向发力

网上看到个网友发的帖子&#xff0c;觉的这个可能是很多开发人员都会面临和需要思考的问题。 不管怎样&#xff0c; 要对生活保持乐观&#xff0c;生活还是有很多的选择和出路的。 &#xff08;内容来自网络&#xff0c;不代表个人观点&#xff09; 《Android Camera开发入门》…

机器人动力学模型及其线性化阻抗控制模型

机器人动力学模型 机器人动力学模型描述了机器人的运动与所受力和力矩之间的关系。这个模型考虑了机器人的质量、惯性、关节摩擦、重力等多种因素&#xff0c;用于预测和解释机器人在给定输入下的动态行为。动力学模型是设计机器人控制器的基础&#xff0c;它可以帮助我们理解…

element-plus的文件上传组件el-upload

el-upload组件 支持多种风格&#xff0c;如文件列表&#xff0c;图片&#xff0c;图片卡片&#xff0c;支持多种事件&#xff0c;预览&#xff0c;删除&#xff0c;上传成功&#xff0c;上传中等钩子。 file-list&#xff1a;上传的文件集合&#xff0c;一定要用v-model:file-…

基于B/S模式和Java技术的生鲜交易系统

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;B/S模式、Java技术 工具&#xff1a;Visual Studio、MySQL数据库开发工具 系统展示 首页 用户注册…

RAG综述汇总

第一篇&#xff1a;Retrieval-Augmented Generation for Large Language Models: A Survey(同济/复旦) 论文链接 1.简介 这篇全面的综述论文详细研究了 RAG 范式的发展&#xff0c;包括 Naive RAG、Advanced RAG 和 Modular RAG。介绍了 RAG 框架的三个基础技术&#xff0c;…

Python28-7.4 独立成分分析ICA分离混合音频

独立成分分析&#xff08;Independent Component Analysis&#xff0c;ICA&#xff09;是一种统计与计算技术&#xff0c;主要用于信号分离&#xff0c;即从多种混合信号中提取出独立的信号源。ICA在处理盲源分离&#xff08;Blind Source Separation&#xff0c;BSS&#xff0…

CANopen协议开发梳理总结笔记教程

0、提醒 CANOpen使用时&#xff0c;需要清楚什么是大端和小端&#xff0c;这对于CANOpen数据发送及解析时&#xff0c;有很大的帮助。且学习开发CANOpen时&#xff0c;需要具备一定的CAN基础。 1、CANOpen协议介绍 ①、什么是CANOpen协议 CANOpen协议是一种架构在控制局域网络…

yaml格式转换成json格式

yaml格式转换成json格式 ①postman生成的结果是yaml格式 ps&#xff1a;postman输出的格式是没有自动换行的&#xff0c;需要将内容换行 ②复制到Python的脚本跑一趟&#xff1a;自动换行并去掉/n&#xff1b; str " "//(postman输出的内容&#xff09; print(st…

【python技巧】parser传入参数

参考网址: https://lightning.ai/docs/pytorch/LTS/api/pytorch_lightning.utilities.argparse.html#pytorch_lightning.utilities.argparse.add_argparse_args 1. 简单传入参数. parse_known_args()方法的作用就是把不在预设属性里的参数也返回,比如下面这个例子, 执行pytho…

2024年信息系统项目管理师1批次上午客观题参考答案及解析(1)

1、新型基础设施建设是以新发展理念为引领&#xff0c;以()为驱动&#xff0c;以信息网络为基础&#xff0c;面向高质量发展需要&#xff0c;提供数字转型、智能升级、融合创新等服务的基础设施体系。 A&#xff0e;技术创新 B&#xff0e;人工智能 C&#xff0e;区块链 D&…