包管理工具--》yarn的配置及使用

news/2025/1/25 12:04:05/

包管理工具系列文章目录

一、包管理工具--》npm的配置及使用(一)

二、包管理工具--》npm的配置及使用(二)

目录

🌟yarn 简介

🌟yarn 的核心命令

初始化

安装

脚本和本地CLI

查询

更新

卸载

🌟yarn 的其他命令

🌟 写在最后 


🌟yarn 简介

yarn 官网:https://yarnpkg.com/

yarn 是由Facebook、Google、Exponent 和 Tilde 联合推出了一个新的 JS 包管理工具,它仍然使用 npm 的registry,不过提供了全新 CLI 来对包进行管理

过去,yarn 的出现极大的抢夺了 npm 的市场,甚至有人戏言,npm 只剩下一个 registry 了。

之所以会出现这种情况,是因为在过去,npm 存在下面的问题:

  • 依赖目录嵌套层次深:过去,npm 的依赖是嵌套的,这在 windows 系统上是一个极大的问题,由于众所周知的原因,windows 系统无法支持太深的目录
  • 下载速度慢
    • 由于嵌套层次的问题,所以npm对包的下载只能是串行的,即前一个包下载完后才会下载下一个包,导致带宽资源没有完全利用
    • 多个相同版本的包被重复的下载
  • 控制台输出繁杂:过去,npm 安装包的时候,每安装一个依赖,就会输出依赖的详细信息,导致一次安装有大量的信息输出到控制台,遇到错误极难查看
  • 工程移植问题:由于 npm 的版本依赖可以是模糊的,可能会导致工程移植后,依赖的确切版本不一致。

针对上述问题,yarn 从诞生那天就已经解决,它用到了以下的手段:

  • 使用扁平的目录结构
  • 并行下载
  • 使用本地缓存
  • 控制台仅输出关键信息
  • 使用yanr-lock文件记录确切依赖

不仅如此,yarn还优化了以下内容:

  • 增加了某些功能强大的命令
  • 让既有的命令更加语义化
  • 本地安装的CLI工具可以使用 yarn 直接启动
  • 将全局安装的目录当作一个普通的工程,生成package.json文件,便于全局安装移植

yarn 的出现给 npm 带来了巨大的压力,很快,npm 学习了 yarn 先进的理念,不断的对自身进行优化,到了目前的npm6版本,几乎完全解决了上面的问题:

  • 目录扁平化
  • 并行下载
  • 本地缓存
  • 使用package-lock记录确切依赖
  • 增加了大量的命令别名
  • 内置了npx,可以启动本地的CLI工具
  • 极大的简化了控制台输出

在npm6 之后,可以说npm已经和yarn非常接近,甚至没有差距了。很多新的项目,又重新从yarn转回到npm。但这两个包管理器是目前的主流,都必须要学习。

🌟yarn 的核心命令

初始化

初始化:yarn init [--yes/-y]

安装

添加指定包:yarn [global] add package-name [--dev/-D] [--exact/-E]

安装package.json中的所有依赖:yarn install [--production/--prod]

脚本和本地CLI

运行脚本:yarn run 脚本名

start、stop、test可以省略run

运行本地安装的CLI:yarn run CLI名

查询

查看bin目录:yarn [global] bin

查询包信息:yarn info 包名 [子字段]

列举已安装的依赖:yarn [global] list [--depth=依赖深度]

yarn的list命令和npm的list不同,yarn输出的信息更加丰富,包括顶级目录结构、每个包的依赖版本号

更新

列举需要更新的包:yarn outdated

更新包:yarn [global] upgrade [包名]

卸载

卸载包:yarn remove 包名

🌟yarn 的其他命令

在终端命令上,yarn不仅仅是对npm的命令做了一个改名,还增加了一些原本没有的命令,这些命令在某些时候使用起来非常方便

yarn check

使用yarn check命令,可以验证package.json文件的依赖记录和lock文件是否一致

这对于防止篡改非常有用

yarn audit

使用yarn audit命令,可以检查本地安装的包有哪些已知漏洞,以表格的形式列出,漏洞级别分为以下几种:

  • INFO:信息级别
  • LOW: 低级别
  • MODERATE:中级别
  • HIGH:高级别
  • CRITICAL:关键级别

yarn why

使用yarn why 包名命令,可以在控制台打印出为什么安装了这个包,哪些包会用到它

yarn create

之前安装脚手架,我们都是使用如下的做法:

  1. 全局安装脚手架工具
  2. 使用全局命令搭建脚手架

由于大部分脚手架工具都是以create-xxx的方式命名的,比如react的官方脚手架名称为create-react-app

因此,可以使用yarn create命令来一步完成安装和搭建

例如:

yarn create react-app my-app # 等同于下面的两条命令

yarn global add create-react-app

create-react-app my-app

🌟 写在最后 

包管理工具--》栏目将详细讲解前端包管理器,包括npm,yarn,及其他包管理器,如果文中出现有瑕疵的地方各位通过评论或者私信联系我,我们一起进步,有兴趣的伙伴可以关注订阅一下:点击查看更多实用技巧与知识


http://www.ppmy.cn/news/1093100.html

相关文章

苹果与芯片巨头Arm达成20年新合作协议,将继续采用芯片技术

9月6日消息,据外媒报道,芯片设计巨头Arm宣布在当地时间周二提交给美国证券交易委员会(SEC)的最新IPO文件中,透露与苹果达成了一项长达20年的新合作协议,加深了双方之间的合作关系。 报道称,虽然…

Qt应用开发(基础篇)——复选按钮 QCheckBox 单选按钮 QRadioButton

一、前言 QCheckBox类与QRadioButton类继承于QAbstractButton,QCheckBox是一个带有文本标签的复选框,QRadioButton是一个带有文本标签的单选按钮。 按钮基类 QAbstractButton QCheckBox QCheckBox复选框是一个很常用的控件,拥有开关(选中和未…

[VSCode] 替换掉/去掉空行

VSCode中使用快捷键CtrlH,出现替换功能,在上面的“查找”框中输入正则表达式: ^\s*(?\r?$)\n然后选择右侧的“使用正则表达式”;“替换”框内为空,点击右侧的“全部替换”,即可去除所有空行。 参考 [VS…

分布式锁的实现

目录 分布式锁的实现什么是分布式锁使用场景分布式锁的实现1.基于数据库:2.基于缓存3.基于ZooKeeper: 分布式锁的满足条件1.互斥性2.可重入性3.容错性 分布式锁的实现 什么是分布式锁 分布式锁是一种用于协调分布式系统中多个进程或线程之间对共享资源…

【每日练习】从两个数字数组里生成最小数字

📖题目描述 给你两个只包含 1 到 9 之间数字的数组 nums1 和 nums2 ,每个数组中的元素 互不相同 ,请你返回最小的数字,两个数组都至少包含这个数字的某个数位。 📖示例 示例 1: 输入:nums1 […

Python代码雨

系列文章 序号文章目录直达链接1浪漫520表白代码https://want595.blog.csdn.net/article/details/1306668812满屏表白代码https://want595.blog.csdn.net/article/details/1297945183跳动的爱心https://want595.blog.csdn.net/article/details/1295031234漂浮爱心https://want…

mysql UUID 作为主键的问题

UUID 在MySQL中,可以使用UUID()函数来生成一个新的UUID值。该函数的返回值是一个字符串类型,表示一个32位的十六进制数字,其中包含4个连字符“-”,例如:“6ccd780c-baba-1026-9564-0040f4311e29”。 varchar(32) 32*4…

Mysql学习之——增删改查语句

Mysql的增删改查 一、数据库操作 1.查询所有数据库 show databases;2.使用某个数据库 如果我已经通过show databases知道有a、b、c三个数据库,那我想用数据库a怎么办呢? use 数据库名; eg:use a;3.查询当前使用的数据库 如果我不知道当…