当前位置: 首页 > news >正文

Yarn 安装与使用教程

Yarn 安装与使用教程

Yarn 是一个由 Facebook 开发的 JavaScript 包管理工具,它比传统的 npm 更加高效、可靠,并且在性能上有所提升。Yarn 主要解决了 npm 安装速度慢、并发性差、缓存机制不完善等问题,它提供了更快的安装速度、更稳定的依赖管理和更好的离线使用体验。

本文将详细介绍如何安装和使用 Yarn,以及它的一些常用功能。


一、安装 Yarn

1.1 使用 npm 安装 Yarn

如果你已经安装了 npm(Node.js 的包管理工具),可以直接通过以下命令安装 Yarn:

npm install -g yarn

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

yarn --version

如果命令输出了版本号,则说明安装成功。

1.2 使用 Homebrew 安装 Yarn(macOS)

对于 macOS 用户,推荐使用 Homebrew 安装 Yarn。首先确保你已经安装了 Homebrew,然后运行以下命令:

brew install yarn

安装完成后,使用以下命令验证安装:

yarn --version

1.3 使用 Windows 安装程序(Windows)

Windows 用户可以通过下载安装程序来安装 Yarn。访问 Yarn 官方安装页面 下载最新版本的安装包,并按照提示安装。

安装完成后,打开命令提示符(CMD)或 PowerShell,输入以下命令检查版本:

yarn --version

二、初始化项目

2.1 创建项目

在项目文件夹中,运行以下命令来初始化一个新的项目:

yarn init

此命令会引导你输入项目的相关信息,如项目名称、版本、描述等。如果你希望跳过所有提示并使用默认值,可以运行:

yarn init -y

这将自动生成一个 package.json 文件,记录项目的元数据和依赖项。

2.2 安装依赖

通过 Yarn 安装项目依赖非常简单。假设你要安装 reactredux,可以运行以下命令:

yarn add react redux

这会将 reactredux 安装到 node_modules 目录中,并将它们的版本信息自动记录在 package.json 文件的 dependencies 字段中。

如果你需要安装开发依赖(如 Webpack 或 Babel),可以加上 --dev 参数:

yarn add webpack --dev

这会将依赖项安装到 devDependencies 中。

2.3 安装指定版本的包

如果你希望安装指定版本的依赖,可以通过以下命令指定版本号:

yarn add react@16.8.0

2.4 使用离线缓存安装依赖

Yarn 具有缓存机制,在首次安装时会将依赖项缓存到本地,以便下次使用。如果你在没有网络的情况下需要安装依赖,可以使用缓存安装:

yarn install --offline

三、常用命令

3.1 安装依赖

当你克隆一个项目时,或当 package.json 中的依赖发生变化时,可以运行以下命令安装所有依赖:

yarn install

这个命令会根据 package.jsonyarn.lock 文件安装所有的依赖包。

3.2 升级依赖

要升级某个依赖的版本,可以运行:

yarn upgrade [package-name]@[version]

例如,升级 react 到 17.0.0 版本:

yarn upgrade react@17.0.0

3.3 移除依赖

如果你想卸载某个不再需要的依赖,可以运行:

yarn remove [package-name]

例如,卸载 redux

yarn remove redux

这会同时移除 node_modules 中的包,并从 package.json 中的依赖项中删除。

3.4 显示已安装的依赖

要查看当前项目中所有安装的依赖,可以使用:

yarn list

这会列出项目中所有的依赖包以及它们的版本。

3.5 生成 lock 文件

yarn.lock 文件记录了所有依赖包及其确切版本,确保项目中所有人安装的依赖版本完全一致。它在运行 yarn install 时会自动生成,如果需要,可以手动删除并重新生成:

rm yarn.lock
yarn install

3.6 运行脚本

package.json 中,通常会定义一些项目相关的脚本,比如构建、测试、启动等。你可以使用以下命令运行这些脚本:

yarn run [script-name]

例如,假设 package.json 中定义了一个 start 脚本,可以通过以下命令启动应用:

yarn run start

你也可以简化为:

yarn start

四、Yarn 与 npm 比较

4.1 性能差异

Yarn 在性能上比 npm 更加出色。由于 Yarn 使用了并行安装和缓存机制,因此安装速度通常会比 npm 更快。

4.2 安全性

Yarn 提供了 yarn.lock 文件来锁定依赖版本,确保团队成员之间使用的是完全一致的版本,避免了因版本差异导致的潜在问题。而 npm 在 5.x 版本之后也引入了 package-lock.json 文件,功能类似。

4.3 离线模式

Yarn 提供了完整的离线安装支持。当某个包被下载并缓存后,即使没有网络连接,也能继续安装依赖。而 npm 在这方面的支持则较为有限。


五、总结

Yarn 是一个快速、可靠的 JavaScript 包管理工具,它相较于 npm 提供了更好的性能、更强的缓存机制和更好的离线支持。如果你正在构建一个现代 JavaScript 应用,Yarn 是一个值得考虑的工具。

通过本文,你已经学会了如何安装和使用 Yarn,包括创建项目、安装依赖、运行脚本等常见操作。你可以在实际项目中根据需要灵活使用 Yarn 提供的各种命令,提高开发效率。

相关文章:

Yarn 安装与使用教程

Yarn 安装与使用教程 Yarn 是一个由 Facebook 开发的 JavaScript 包管理工具,它比传统的 npm 更加高效、可靠,并且在性能上有所提升。Yarn 主要解决了 npm 安装速度慢、并发性差、缓存机制不完善等问题,它提供了更快的安装速度、更稳定的依赖…...

机器学习之二:指导式学习

正如人们有各种各样的学习方法一样,机器学习也有多种学习方法。若按学习时所用的方法进行分类,则机器学习可分为机械式学习、指导式学习、示例学习、类比学习、解释学习等。这是温斯顿在1977年提出的一种分类方法。 有关机器学习的基本概念,…...

【学习笔记】检索增强生成(RAG)技术

检索增强生成(RAG)技术:原理、实现与发展趋势 1. RAG技术概述 检索增强生成(Retrieval-Augmented Generation,RAG)是一种将信息检索与生成模型相结合的技术,旨在增强大型语言模型的知识能力和…...

计算机视觉——对比YOLOv12、YOLOv11、和基于Darknet的YOLOv7的微调对比

概述 目标检测领域取得了巨大进步,其中 YOLOv12、YOLOv11 和基于 Darknet 的 YOLOv7 在实时检测方面表现出色。尽管这些模型在通用目标检测数据集上表现卓越,但在 HRSC2016-MS(高分辨率舰船数据集) 上对 YOLOv12 进行微调时&…...

Pygame跨平台打包:将游戏发布到Windows、Mac和Linux

Pygame跨平台打包:将游戏发布到Windows、Mac和Linux 引言 在游戏开发的世界中,Pygame 是一个非常受欢迎的库,它使得使用 Python 编写 2D 游戏变得简单而有趣。然而,当你完成了一个游戏并希望将其发布给更多的玩家时,如何将你的游戏打包成可以在不同操作系统上运行的可执…...

关于图论的知识

如果一个无向图有 $n\times (n-1)\div 2$ 条边,称为**完全图** 如果一个完全图任意两个点都可以互相到达,称为**连通图** 一个包含 $dfs$ 与 $bfs$ 的图的遍历程序 程序可做到的: 1、每一行输出一个 **搜索树** 2、$dfs$ 与 $bfs$ 并存 c…...

365打卡第R3周: RNN-心脏病预测

🍨 本文为🔗365天深度学习训练营中的学习记录博客 🍖 原作者:K同学啊 🏡 我的环境: 语言环境:Python3.10 编译器:Jupyter Lab 深度学习环境:torch2.5.1 torchvision0…...

如何解决IDE项目启动报错 error:0308010C:digital envelope routines::unsupported 问题

如何解决IDE项目启动报错 error:0308010C:digital envelope routines::unsupported 问题 在现代软件开发过程中,开发人员通常使用集成开发环境(IDE)如IntelliJ IDEA、Visual Studio Code(VSCode)等进行Node.js项目开发…...

嵌入式学习笔记 - HAL_xxx_MspInit(xxx);函数

使用cubeMX生成的HAL库函数中,所有外设的初始化函数HAL_xxx_Init(&xxxHandle)中都存在有此调用函数,此调用函数其实是对各外设模块比如UART,I2C等的底层硬件初始化,包括UART时钟,以及UART用到的GPIO的工作模式以及…...

Dify框架面试内容整理-Dify框架

什么是Dify框架? Dify框架是一个开源的AI应用开发平台,专注于帮助开发者和非技术人员快速构建、部署和管理基于大语言模型(如GPT系列、国产开源模型)的应用。 Dify框架的特点:...

计算机网络的五层结构(物理层、数据链路层、网络层、传输层、应用层)到底是什么?

文章目录 五层结构1. 物理层(Physical Layer)2. 数据链路层(Data Link Layer)3. 网络层(Network Layer)4. 传输层(Transport Layer)5. 应用层(Application Layer&#xf…...

【计算机视觉】CV实战项目 -深度解析PaddleSegSharp:基于PaddleSeg的.NET图像分割解决方案

深度解析PaddleSegSharp:基于PaddleSeg的.NET图像分割解决方案 技术背景与项目概述核心功能与特点实战部署指南环境要求硬件要求软件依赖 项目结构快速开始1. 获取项目2. 准备模型文件3. 运行示例 高级使用技巧模型切换背景替换性能优化 常见问题与解决方案技术原理…...

面试新收获-大模型学习

大模型原理 Transformer 架构与自注意力机制 Transformer 是当前大多数大模型采用的核心架构,由编码器-解码器组成,摒弃了传统 RNN 的顺序处理方式。Transformer 中关键在于多头自注意力机制(Multi-Head Self-Attention)&#xf…...

《Keras 3部署全攻略:从新手到实战高手》

《Keras 3部署全攻略:从新手到实战高手》 一、引言:开启 Keras 3 部署之旅 在深度学习的广阔领域中,Keras 一直以其简洁易用、高度模块化的特性,深受开发者的喜爱,被誉为深度学习的 “福音”。而如今,Keras 3 的强势登场,更是为这个领域注入了全新的活力。它像是一位集…...

如何修改npm的全局安装路径?

修改 npm 的全局安装路径可以通过以下步骤完成,确保全局包(使用 -g 安装的模块)和缓存文件存储到自定义路径。以下是详细步骤: 1. 创建自定义路径的目录 在目标路径下创建两个文件夹,分别用于存储全局模块和缓存文件…...

计算机网络 | Chapter1 计算机网络和因特网

💓个人主页:mooridy-CSDN博客 💓文章专栏:《计算机网络:自定向下方法》 大纲式阅读笔记_mooridy的博客-CSDN博客 🌹关注我,和我一起学习更多计算机网络的知识 🔝🔝 目录 …...

前端面试 HTML篇

src和href的区别 src和href都是用来加载外部资源,区别如下 src:当浏览器解析到该元素时,会暂停其他资源的加载和处理,直到该资源加载完成。 它会将资源内容嵌入到当前标签所在的位置,将其指向的资源下载应用到文档内…...

Prometheus、Zabbix 和 Nagios 这三个工具的对100个节点的部署设计的信息流

Prometheus 1. 基本组件及角色 Prometheus主要由Prometheus Server、Exporter、Alertmanager和Grafana(可选)等组件构成。 Prometheus Server:负责数据的收集、存储和查询,以及规则的评估。Exporter:部署在被监控节点上,负责收集节点的各种指标数据。Alertmanager:负责…...

Tableau 基础表制作

目录 1.数据连接 2. 数据可视化 3. 基础表制作 3.1 对比分析:比大小 1. 柱状图 2. 条形图 3. 热力图 4. 气泡图 5. 词云 3.2 变化分析:看趋势 1. 折线图 2. 面积图 3.3 构成分析:看占比 1. 饼图 2. 树地图 3. 堆积图 3.4 关…...

openAICEO山姆奥特曼未来预测雄文之三个观察

《三个观察》 山姆奥特曼 这篇文章主要讲的是关于AGI(人工通用智能)的未来发展及其对社会的影响,用大白话总结如下: 核心观点: AGI是什么? AGI是一种能像人类一样解决各种复杂问题的智能系统,比…...

springboot入门-service层构造器注入原理

在 Spring Boot 中,通过构造器注入的方式将 Repository(JPA)或 Mapper(MyBatis)注入到 Service 层的原理及示例如下: 1. 构造器注入的原理 依赖注入(DI)机制: Spring 容…...

JavaScript 笔记 --- part6 --- JS进阶 (part1)

JS 进阶(part1) 作用域 局部作用域 定义: 局部作用域指的是在函数内部定义的变量,只能在函数内部访问,外部不能访问。 特点: 局部作用域变量只能在函数内部或代码块中访问,外部不能访问。 分类: 函数作用域: 指的是在函数内部定义的变量&…...

使用matplotlib绘制Raincloud图/云雨图/柱状图/小提琴图

需求: 使用Python的matplotlib绘制数据分布、数据箱型图、数据散点图 参考: https://blog.csdn.net/weixin_39559994/article/details/128197965?fromshareblogdetail&sharetypeblogdetail&sharerId128197965&sharereferPC&sharesource…...

BT152-ASEMI机器人率器件专用BT152

编辑:LL BT152-ASEMI机器人率器件专用BT152 型号:BT152 品牌:ASEMI 封装:TO-220F 批号:最新 引脚数量:3 封装尺寸:如图 特性:单向可控硅 工作结温:-40℃~150℃ …...

【Redis——通用命令】

文章目录 Redis为什么快?生产环境的概念Redis中最核心的两个命令get:通过key拿valueset:将key和value存入数据库 其他通用命令keysexist判定key是否存在delexpire:为指定的key设置一个过期时间TTL(Time To Live&#x…...

qt之开发大恒usb3.0相机一

1.在大恒相机给的sample里没有看见qt开发的demo. 第一步先运行c sdk中中的demo,看了下代码,大恒使用的UI框架是MFC.然后 vs2022编译。运行结果 第一步,先用qt进行坐下页面布局,如下图(保存图片的地方做了些更改&#…...

系列位置效应——AI与思维模型【80】

一、定义 系列位置效应思维模型是指在一系列事物或信息的呈现过程中,人们对于处于系列开头和结尾部分的项目的记忆效果优于中间部分项目的现象。具体而言,开头部分的记忆优势被称为首因效应,结尾部分的记忆优势被称为近因效应。这种效应反映…...

解决conda虚拟环境安装包却依旧安装到base环境下

最近跑项目装包装到几度崩溃,包一直没有安装到正确位置,为此写下这篇文章记录一下,也希望能帮到有需要的人。(此文章开发环境为anaconda和window) 方法一 先conda deactivate,看到(base)消失…...

设计看似完美却测不过? Intra-Pair Skew 是「讯号完整性(Signal Integrity)」里最隐形的杀手

各位不知道有没有遇过,一对很长的差分走线,看起来很正常,但是测试结果偶尔会fail偶尔会pass,不像是软件问题,也不像是制程问题。 看了一下Layout,发现阻抗匹配控制的非常好,TDR测试也显示阻抗好…...

使用MyBatis注解方式的完整示例,涵盖CRUD、动态SQL、分页、事务管理等场景,并附详细注释和对比表格

以下是使用MyBatis注解方式的完整示例,涵盖CRUD、动态SQL、分页、事务管理等场景,并附详细注释和对比表格: 项目结构 mybatis-annotation-demo/ ├── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com.example/…...

【头脑风暴】加权平均

一些加权平均而不是算术平均的思路,启发来源:ACLS,WACLS。 简单平均假设所有样本的误差和噪声特性相同,但在实际电路中,不同阶段、不同时间点的样本价值(对最终精度的贡献)是不同的。​​加权平均的核心思想…...

DAM-3B,英伟达推出的多模态大语言模型

DAM-3B是什么 DAM-3B(Describe Anything 3B)是英伟达推出的一款多模态大语言模型,专门用于为图像和视频中的特定区域生成详细描述。用户可以通过点、边界框、涂鸦或掩码等方式来标识目标区域,从而得到精准且符合上下文的文本描述…...

2025年暨南大学 ACM校赛分析与题解

文章目录 C.最长公共前缀D.排列H.回文串 法不定法,在于因时因势AC不了就是还得加练! C.最长公共前缀 字典树模版题目,不了解字典树的同学,可以看我的另一篇博客 算法 之 字典树 class Node: # 和模版题目相似,但是多…...

图像处理——边缘检测

1 概述 边缘检测是图像处理和计算机视觉中的一项基本技术,用于识别图像中亮度变化剧烈的像素点,这些像素点通常对应于物体的边界。它通过检测图像中亮度或颜色变化显著的区域,提取出物体的轮廓,常用于计算机视觉、图像处理和模式识…...

认识哈希以及哈希表的模拟实现

文章目录 1.什么是哈希2.哈希函数2.1 除留余数法/除法散列法2.2 乘法散列法2.3 全域散列法 3.哈希冲突4.解决哈希冲突的方法4.1 开放定址法4.1.1 用除留余数法和线性探测模拟实现简单的哈希表 4.2 链地址法4.2.1 用除留余数法和链地址法模拟实现简单的哈希表 1.什么是哈希 概念…...

【Castle-X机器人】二、智能导览模块安装与调试

持续更新。。。。。。。。。。。。。。。 【Castle-X机器人】智能导览模块安装与调试 二、智能导览模块安装与调试2.1 智能导览模块安装2.2 智能导览模块调试2.2.1 红外测温传感器测试2.2.2 2D摄像头测试 二、智能导览模块安装与调试 2.1 智能导览模块安装 使用相应工具将智能…...

硬件须知的基本问题2

目录 1、典型电路 1. DC5V 转 DC3.3V 电路 2. 通信电路 2、STM32F103RCT6 最小系统如何设计搭建电路 1. 电源电路 2. 复位电路 3. 时钟电路 4. 下载电路 5. 单片机连接连接 3、请列举你所知道的二极管型号? 1. 整流二极管 2. 小信号二极管 3. 肖特基二极管 4. 超…...

Dify 使用 excel 或者 csv 文件创建知识库

Dify 使用 excel 或者 csv 文件创建知识库 1. 创建知识库2. 创建聊天助手3. 其他 1. 创建知识库 创建知识库,导入excel/csv文件, 文件内容, 单击 “预览块”,可以确认会生成多个键值对的块, 配置 Embedding 模型和检索…...

深入理解二叉树遍历:递归与栈的双重视角

二叉树的遍历前序遍历中序遍历后续遍历总结 二叉树的遍历 虽然用递归的方法遍历二叉树实现起来更简单,但是要想深入理解二叉树的遍历,我们还必须要掌握用栈遍历二叉树,递归其实就是利用了系统栈去遍历。特此记录一下如何用双重视角去看待二叉…...

通过gap看margin和padding在布局中的应用

在CSS布局中,控制元素之间的间距有多种方式:margin、padding,还有新晋的gap属性。虽然选择多了,但这也带来了不少头疼的问题。比如,你的自定义组件到底该不该加margin?如果加了,那在使用这个组件…...

图像畸变-径向切向畸变实时图像RTSP推流

实验环境 注意:ffmpeg进程stdin写入两张图片的时间间隔不能太长,否则mediamtx会出现对应的推流session超时退出。 实验效果 全部代码 my_util.py #进度条 import os import sys import time import shutil import logging import time from datetime i…...

2025最新Facefusion3.1.2使用Docker部署,保姆级教程,无需配置环境

Docker部署Facefusion 环境 windows10 Facefusion3.1.2 安装 拉取源代码 git clone https://github.com/facefusion/facefusion-docker.git 此处如果拉不下来,需要科学上网,不会的可以找我。 运行容器 将Dockerfile.cpu文件中的的From python:3.…...

区块链实战:Hyperledger Fabric多节点网络部署与高性能业务链码

一、联盟链架构设计与技术选型 1.1 架构设计原则 联盟链采用​​分层架构​​,包含应用层、共识层、网络层和数据层: ​​应用层​​:提供用户接口(Web/API)和智能合约交互入口​​共识层​​:采用PBFT或…...

C++学习笔记(四十)——STL之归约算法

STL 算法分类: 类别常见算法作用排序sort、stable_sort、partial_sort、nth_element等排序搜索find、find_if、count、count_if、binary_search等查找元素修改copy、replace、replace_if、swap、fill等修改容器内容删除remove、remove_if、unique等删除元素归约for…...

docker容器运维工具——ctop

概述 Github主页:https://github.com/bcicen/ctop 当服务器上运行多个容器时,迅速查看所有容器运行情况及指标将会大为提高工作效率。ctop工具可以像top命令一样,对所有容器进行总览,并实现简单的操作。 部署 下载(…...

RAG vs 微调:大模型知识更新的最优解之争

一、技术本质:知识注入的两条路径 在大模型应用落地的实践中,RAG(检索增强生成)与微调(Fine-tuning)已成为知识更新的两大核心技术路径。二者的本质差异在于是否对模型参数进行修改: 维度RAG微…...

FPGA前瞻篇-组合逻辑电路设计-多路复用器

多路选择器(MUX)简介 基本概念 多路选择器(MUX,Multiplexer)是一种多输入、单输出的组合逻辑电路。 它通过选择控制信号,在多个输入信号中选择一个连接到输出端。 可以理解为一个多路数字开关。 &…...

Day13(前缀和)——LeetCode2845.统计趣味子数组的数目

1 题目描述 给定一个下标从0开始的数组nums,以及整数modulo和k。找出并统计数组中趣味子数组的数目: 在范围[l,r]内,设cnt为满足nums[i]%modulok的索引i的数量,并且cnt%modulok。子数组是数组中的一个连续非空的元素序列。 其中一…...

WebcamJS中文文档

文章目录 WebcamJS针对Chrome 47及以上版本的重要说明浏览器支持演示示例开源协议快速入门指南配置初始化拍摄照片自定义图像大小裁剪图像翻转图像(镜像模式)冻结/预览图像设置备用SWF文件位置重置(关闭)API 参考自定义事件向服务器提交图像跟踪上传进度包含在现有表单中自…...

论文笔记(八十)π0.5: a Vision-Language-Action Model with Open-World Generalization

π0.5: a Vision-Language-Action Model with Open-World Generalization 文章概括摘要I. 引言II. 相关工作通用机器人操作策略。非机器人数据的协同训练。使用语言进行机器人推理和规划。具有开放世界泛化能力的机器人学习系统。 III. 序言IV. π 0.5 π_{0.5} π0.5​ 模型与…...