yarn 现代的包管理工具 介绍

一、前言

在这里插入图片描述

yarn 是一个现代的包管理工具,它是 npm(Node Package Manager)的一个替代品。yarn 由 Facebook 开发,并在 2016 年发布。它解决了当时 npm 的一些问题,尤其是在性能和安全性方面。

yarn 主要用于以下几个方面:

  1. 依赖管理:管理项目的依赖项,就像 npm 一样。你可以使用 yarn add package-name 来添加新的依赖,yarn 会自动更新 package.jsonyarn.lock 文件。

  2. 安装项目依赖:通过 yarn install 命令安装所有在 package.json 文件中列出的依赖项。

  3. 版本锁定yarn.lock 文件锁定了依赖项的版本,确保每个安装或在不同环境下的构建都是一致的。

  4. 脚本运行:与 npm 类似,yarn 可以运行在 package.json 中定义的脚本,例如 yarn startyarn test

  5. 工作区支持yarn 支持工作区(workspaces),这使得在单个仓库中管理多个包变得更加容易。

  6. 性能yarn 在安装包时更快,因为它并行安装依赖项,并且更有效地利用缓存。

  7. 网络性能和可靠性yarn 通过使用一个全局缓存来存储下载过的每个包,因此你不需要每次都重新下载它们。

  8. 安全yarn 提供了一些增强的安全特性,例如通过校验每个安装包的完整性来提供更安全的依赖管理。

  9. 用户界面yarn 提供了一个更清晰的用户界面,给出更详细的错误信息和警告。

随着时间的推移,npm 也在不断地更新和改进,添加了许多 yarn 所具有的特性,包括 npm 自己的版本锁定文件 package-lock.json。因此,两者之间的差异已经不像最初那么大了,但许多开发者和团队仍然根据个人偏好和项目需求选择使用 yarn

二、yarn的基本使用

yarn的项目,建议编译器使用:VScode
要使用 Yarn 初始化一个新的项目,你需要按照以下步骤操作:

  1. 安装 Yarn:如果你还没有安装 Yarn,请先安装它。你可以通过 npm(这可能看起来有些讽刺)来安装 Yarn,或者从 Yarn 的官方网站下载安装包。

    使用 npm 安装 Yarn:

    npm install -g yarn
    

    或者,你可以访问 Yarn 官网 来查看其他安装选项。

  2. 初始化新项目:打开终端(在 Windows 上是命令提示符或 PowerShell,在 macOS 或 Linux 上是终端),然后导航到你想要创建项目的目录。运行以下命令来初始化一个新项目:

    yarn init
    

    这个命令将会启动一个简单的交互式流程,询问一些问题来帮助设置 package.json 文件,如项目名称、版本、描述等。如果你想要跳过这些问题直接创建一个带有默认值的 package.json 文件,可以运行:

    yarn init -y
    
  3. 添加依赖:一旦你的项目被初始化,你可以开始添加依赖。使用 yarn add 命令来添加你需要的库:

    yarn add [package-name]
    

    这将会安装最新版本的包,并且更新你的 package.jsonyarn.lock 文件,后者用于锁定依赖版本以确保一致性。

  4. 安装所有依赖:如果你是在现有项目上工作,只需运行以下命令来安装所有在 package.json 中定义的依赖:

    yarn
    

    或者:

    yarn install
    
  5. 运行脚本:如果你的 package.json 文件中定义了脚本,比如 starttest,你可以使用 Yarn 来运行这些脚本:

    yarn run [script-name]
    

    例如,如果你有一个名为 start 的脚本,你可以这样运行它:

    yarn start
    

通过这些步骤,你就可以使用 Yarn 来初始化和管理你的 JavaScript 或 TypeScript 项目了。

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

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

相关文章

java面向对象基础(面试)

一、面向对象基础 1. 面向对象和面向过程的区别 面向过程把解决问题的过程拆成一个个方法,通过一个个方法的执行解决问题。面向对象会先抽象出对象,然后用对象执行方法的方式解决问题。 2.创建一个对象用什么运算符?对象实体与对象引用有何不同? n…

产品原型图设计规范大全

目前,市场上许多产品经理或设计师都在使用一些优秀的原型设计规范,这些规范几乎涵盖了原型设计的许多方面。一套好的、完整的原型设计规范可以统一产品设计风格,检验产品的可用性,有效提高产品经理绘制原型图的效率,更…

微调入门篇:大模型微调的理论学习

1、为什么大模型微调 之前在《大模型这块蛋糕,想吃吗》介绍了普通人如何搭上大模型这块列车, 其中有一个就是模型微调,这个也是未来很多IT公司需要发力的方向,以及在《垂直领域大模型的应用更亲民》中论述了为什么微调适合大家,以及微调有什么价值? 作为小程序猿在开始进行微…

Oracle 锁的概念以及分类

1.什么是锁 数据库是一个庞大的多用户数据管理系统, 同一时刻可能有多个用户同时操作。事务的分离性要求当前事务不能影响其他的事务,所以多个会话操作同一个资源时,数据库会利用锁确保他们像队列一样一次执行。利用来锁消除多个用户操作同一…

惬意上手python —— python中的术语及案例解析

面向对象编程 面向对象编程(Object-Oriented Programming,OOP)是一种编程范式,它将数据和操作数据的方法封装在一起,以对象的形式表示。在Python中,一切皆为对象,因此Python是一种面向对象的语…

Activiti工作流引擎

一、工作流介绍: 1.1 概念: 工作流(Workflow),就是通过计算机对业务流程自动化执行管理。它主要解决的是“使在多个参与者之间按照某种预定义的规则自动进行传递文档、信息或任务的过程,从而实现某个预期的业务目标,或…

nodejs下载介绍

前言 在我们开发项目的时候使用的是这种对应的前后端分离的形式,各个开发人员各司其职来完成整个项目的构建 但是实际开发的话前端也是分成了很多部分比如下图 那么我们就用到了对应的快捷生成一个前端项目的工具,nodejs携带的脚手架 下载步骤 大家可…

父元素flex:1 高度却被子元素撑开的问题

问题 当父元素设置了flex: 1; 的情况下,想在其中子元素超出父元素高度的情况下,产生滚动条,在父元素区域滚动。由于子元素高度不固定,故父元素设置为display: flex; flex-direction: column; 子元素设置flex: 1; overflow: auto;…

Unity触发检测Trigger踩坑合集

正常状态 绿色方块:刚体碰撞盒检测触发碰撞脚本 蓝色方块:碰撞盒 检测脚本: 正常进出: 踩坑1 绿色方块:刚体碰撞盒检测触发碰撞脚本 蓝色方块:碰撞盒 保持绿色和蓝色方块的接触 对蓝色方块&#xff1a…

PHP微信UI在线聊天系统源码 客服私有即时通讯系统

(购买本专栏可免费下载栏目内所有资源不受限制,持续发布中,需要注意的是,本专栏为批量下载专用,并无法保证某款源码或者插件绝对可用,介意不要购买) DuckChat是一套完整的私有即时通讯解决方案,包含服务器端程序和各种客户端程序(包括iOS、Android、PC等)。通过Duck…

kubeadm安装K8S_v1.28.x容器使用docker

一.环境部署 1.1 基础环境配置(只有1台服务器,作为masrer,也作为node使用) [rootecs-cf5e ~]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) [rootecs-cf5e ~]# uname -a Linux ecs-cf5e 3.10.0-11…

LRU缓存(Leetcode146)

例题: 分析: 题目要求函数get和put要达到O(1)的时间复杂度,可以用 hashMap 来实现,因为要满足逐出最久未使用的元素的一个效果,还需要配合一个双向链表来共同实现。链表中的节点为一组key-value。 我们可以用双向链表来…

分割头篇 | 原创自研 | YOLOv8 更换 SEResNeXtBottleneck 头 | 附详细结构图

左图:ResNet 的一个模块。右图:复杂度大致相同的 ResNeXt 模块,基数(cardinality)为32。图中的一层表示为(输入通道数,滤波器大小,输出通道数)。 1. 思路 ResNeXt是微软研究院在2017年发表的成果。它的设计灵感来自于经典的ResNet模型,但ResNeXt有个特别之处:它采用…

FileZilla 的安装与使用

目录 一. FileZilla 是什么二. FileZilla 的安装1. 下载 FileZilla2. 安装 三. FileZilla 的使用 一. FileZilla 是什么 FileZilla 是一个免费的开源 FTP(文件传输协议)客户端软件,用于在计算机之间传输文件。它提供了一个直观的用户界面&am…

SV-9032 机架式ip网络采播器

SV-9032是深圳锐科达电子有限公司的一款机架式网络采播器,具有10/100M以太网接口,后面板上有一组AUX音源输入和一组6.35mm接口的麦克风输入,可以直接连接音源输出设备或麦克风,将采集音源编码后发送至网络播放终端上。同时还具有三…

数据结构之生成树及最小生成树

数据结构之生成树及最小生成树 1、生成树概念2、最小生成树 数据结构是程序设计的重要基础,它所讨论的内容和技术对从事软件项目的开发有重要作用。学习数据结构要达到的目标是学会从问题出发,分析和研究计算机加工的数据的特性,以便为应用所…

Springboot+vue的健身房管理系统(有报告)。Javaee项目,springboot vue前后端分离项目

演示视频: Springbootvue的健身房管理系统(有报告)。Javaee项目,springboot vue前后端分离项目 项目介绍: 本文设计了一个基于Springbootvue的前后端分离的健身房管理系统,采用M(model&#xf…

RabbitMQ概念

一 、RabbitMQ概念 1 架构图 2 相关概念 Publisher - ⽣产者:发布消息到RabbitMQ中的Exchange Consumer - 消费者:监听RabbitMQ中的Queue中的消息 Broker:接收和分发消息的应用,RabbitMQ Server就是 Message Broker&#xf…

循环——枚举算法2(c++)

目录 找和为K的两个元素 描述 在一个长度为n(n < 1000)的整数序列中&#xff0c;判断是否存在某两个元素之和为k。 输入 第一行输入序列的长度n和k&#xff0c;用空格分开。 第二行输入序列中的n个整数&#xff0c;用空格分开。 输出 如果存在某两个元素的和为k&…

Java基于SpringBoot+Vue的网上超市管理系统

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…