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

安装 yarn、pnpm、功能比较

安装 yarn

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

快速、可靠和安全的依赖性管理。

Yarn是您代码的软件包管理器。它允许您使用和共享(例如JavaScript)与来自世界各地的其他开发人员一起编写代码。Yarn是一个新的快速安全可信赖的可以替代 NPM 的依赖管理工具。Yarn 一种取代 npm 的 Node的模块管理器,yarn 同样是一个从 npm 注册源获取模块的工具。

Yarn允许您使用其他开发人员的解决方案来解决不同的问题,使您更容易开发软件。

超快:Yarn缓存了它下载的每个软件包,因此它永远不需要再下载它。它还并行化操作,以最大限度地提高资源利用率,因此安装时间比以往任何时候都快。

超级安全:Yarn在执行代码之前使用校验和来验证每个已安装的软件包的完整性。

超级可靠:使用详细但简洁的锁文件格式和确定性安装算法,Yarn能够保证在一个系统上工作的安装在任何其他系统上的工作方式完全相同。

安装 yarn

npm install yarn -g

创建软连接

ln -s /usr/local/nodejs/bin/yarn /usr/local/bin/yarn
ln -s  /usr/local/nodejs/bin/yarnpkg /usr/local/bin/yarnpkg

查看版本

yarn -v

yarn 查看各种路径命令

### 查看 yarn 安装包的位置
yarn global dir

/usr/local/share/.config/yarn/global。如果使用yarn global add xxx安装文件包,默认位置。

### 查看 yarn 安装包 bin 位置
yarn global bin

/usr/local/bin。如果使用yarn global add xxx安装文件包 bin 默认位置。

### 看 yarn 全局 cache 位置
yarn cache dir

/usr/local/share/.cache/yarn/v6。

### 看 yarn 镜像源
yarn config get registry
### 设置 yarn 镜像源
yarn config set registry https://registry.yarnpkg.com

卸载 yarn

yarn 全局配置文件,默认在/usr/local/share/.yarnrc,或者/root/.yarnrc

npm uninstall yarn -grm -f /usr/local/bin/yarn
rm -f /usr/local/bin/yarnpkg
rm -f /usr/local/bin/create-vite
rm -f /usr/local/bin/cva
rm -f /usr/local/share/.yarnrcrm -f /root/.yarnrc
rm -rf /root/.yarnrm -rf  /usr/local/share/.config/yarn
rm -rf  /usr/local/share/.cache/yarnrm -rf /usr/local/nodejs/lib/node_modules/corepack/shims/yarn
rm -rf /usr/local/nodejs/lib/node_modules/corepack/shims/nodewin/yarn

删除所有包含 yarn 的文件及目录

find /root -name yarn* | xargs rm -rf      
find /usr/local -name yarn* | xargs rm -rf

yarn 常用命令

yarn add:添加一个软件包以在您当前软件包中使用。
yarn init:初始化软件包的开发。
yarn install:安装package.json文件中定义的所有依赖项。
yarn publish:向软件包管理器发布软件包。
yarn remove:从当前软件包中删除一个未使用的软件包。

安装 pnpm

快速的,节省磁盘空间的包管理工具

当使用 npm 时,如果你有 100 个项目,并且所有项目都有一个相同的依赖包,那么, 你在硬盘上就需要保存 100 份该相同依赖包的副本。然而,如果是使用 pnpm,依赖包将被 存放在一个统一的位置,因此:

如果你对同一依赖包需要使用不同的版本,则仅有 版本之间不同的文件会被存储起来。例如,如果某个依赖包包含 100 个文件,其发布了一个新 版本,并且新版本中只有一个文件有修改,则 pnpm update 只需要添加一个 新文件到存储中,而不会因为一个文件的修改而保存依赖包的 所有文件。

所有文件都保存在硬盘上的统一的位置。当安装软件包时, 其包含的所有文件都会硬链接自此位置,而不会占用 额外的硬盘空间。这让你可以在项目之间方便地共享相同版本的 依赖包。

最终结果就是以项目和依赖包的比例来看,节省了大量的硬盘空间, 并且安装速度也大大提高了!

快速:pnpm is up to 2x faster than npm

高效:node_modules 中的文件为复制或链接自特定的内容寻址存储库

支持 monorepos:pnpm 内置支持单仓多包

严格:pnpm 默认创建了一个非平铺的 node_modules,因此代码无法访问任意包

安装

通过 npm 安装 pnpm

npm install -g pnpm

npm install -g @pnpm/exe

Homebrew 安装 pnpm
如果你已经安装了 Homebrew 软件包管理器,则可以使用如下命令赖安装 pnpm:

brew install pnpm

Scoop 安装 pnpm
如果你已经安装了 Scoop,就可以通过一下命令安装 pnpm:

scoop install nodejs-lts pnpm

创建软链接和硬链接

通过 ln -s 创建一个软链接,通过 ln 可以创建一个硬链接。

ln -s /usr/local/nodejs/bin/pnpm /usr/local/bin/pnpm
ln -s  /usr/local/nodejs/bin/pnpx /usr/local/bin/pnpx

他们的区别有以下几点:

软链接可理解为指向源文件的指针,它是单独的一个文件,仅仅只有几个字节,它拥有独立的 inode
硬链接与源文件同时指向一个物理地址,它与源文件共享存储数据,它俩拥有相同的 inode

查看版本

pnpm -v或者
pnpm --version

pnpm 常用命令

# 初始化项目,安装项目极其依赖
pnpm install
pnpm i# 安装包, 默认情况下,任何新软件包都安装为生产依赖项,写入dependencies
pnpm add packName
pnpm add packName -S# 安装包,安装为开发依赖项,写入 devDependencies
pnpm add packName -D# 安装包,全局安装
pnpm add packName -g# 移除项目,参数要与安装的时候相同
pnpm remove packName

卸载 pnpm

npm uninstall pnpm -g

查看所有包含 pnpm 的遗留文件

find /root -name pnpm*
find /usr/local -name pnpm*

查看所有包含 pnpx 的遗留文件

find /root -name pnpx*
find /usr/local -name pnpx*

删除所有包含 pnpm 的文件及目录

find /root -name pnpm* | xargs rm -rf      
find /usr/local -name pnpm* | xargs rm -rf 

删除所有包含 pnpx 的文件及目录

find /root -name pnpx* | xargs rm -rf      
find /usr/local -name pnpx* | xargs rm -rf 

也可以单独删除:

rm -f /usr/local/bin/pnpm
rm -f /usr/local/bin/pnpxrm -f /root/.cache/pnpm
rm -f /root/.local/share/pnpmrm -rf /usr/local/nodejs/lib/node_modules/corepack/shims/pnpm
rm -rf /usr/local/nodejs/lib/node_modules/corepack/shims/pnpm.cmd
rm -rf /usr/local/nodejs/lib/node_modules/corepack/shims/pnpm.ps1rm -rf /usr/local/nodejs/lib/node_modules/corepack/shims/pnpx
rm -rf /usr/local/nodejs/lib/node_modules/corepack/shims/pnpx.cmd
rm -rf /usr/local/nodejs/lib/node_modules/corepack/shims/pnpx.ps1rm -rf /usr/local/nodejs/lib/node_modules/corepack/shims/nodewin/pnpm
rm -rf /usr/local/nodejs/lib/node_modules/corepack/shims/nodewin/pnpm.cmd
rm -rf /usr/local/nodejs/lib/node_modules/corepack/shims/nodewin/pnpm.ps1rm -rf /usr/local/nodejs/lib/node_modules/corepack/shims/nodewin/pnpx
rm -rf /usr/local/nodejs/lib/node_modules/corepack/shims/nodewin/pnpx.cmd
rm -rf /usr/local/nodejs/lib/node_modules/corepack/shims/nodewin/pnpx.ps1

兼容性

以下列表列出了以往的 pnpm 版本和对应支持的 Node.js 版本。

Node.jspnpm 5pnpm 6pnpm 7pnpm 8
Node.js 12✔️✔️
Node.js 14✔️✔️✔️
Node.js 16?️✔️✔️✔️
Node.js 18?️✔️✔️✔️
Node.js 20?️?️✔️✔️

功能比较

功能pnpmYarnnpm
工作空间支持(monorepo)✔️✔️✔️
有锁文件✔️ - pnpm-lock.yaml✔️ - yarn.lock✔️ - package-lock.json
隔离的 node_modules✔️ - 默认✔️✔️
提升的 node_modules✔️✔️✔️ - 默认
管理 Node.js 版本✔️
自动安装 peers✔️✔️
Plug’n’Play✔️✔️ - 默认
零安装✔️
修补依赖项✔️✔️
支持覆盖✔️✔️ - 通过 resolutions✔️
内容可寻址存储✔️
动态包执行✔️ - 通过 pnpm dlx✔️ - 通过 yarn dlx✔️ - 通过 npx
辅助缓存✔️
列出许可证✔️ - 通过 pnpm licenses list✔️ - 通过插件

相关文章:

安装 yarn、pnpm、功能比较

安装 yarn 官网:https://classic.yarnpkg.com/ 快速、可靠和安全的依赖性管理。 Yarn是您代码的软件包管理器。它允许您使用和共享(例如JavaScript)与来自世界各地的其他开发人员一起编写代码。Yarn是一个新的快速安全可信赖的可以替代 NP…...

计算机专业个人简历范文(8篇)

HR浏览一份简历也就25秒左右,如果你连「好简历」都没有,怎么能找到好工作呢? 如果你不懂得如何在简历上展示自己,或者觉得怎么改简历都不出彩,那请你一定仔细读完。 互联网运营个人简历范文> 男 22 本科 AI简历…...

几个实用网站

论文短语:https://www.phrasebank.manchester.ac.uk/ 翻译:https://www.deepl.com/en/translator 润色:https://quillbot.com/ 榜单:www.paperwithcode.com ****NLP民工的乐园: 几乎最全的中文NLP资源库:****https…...

Pycharm 切换interpreter---python的环境和第三方库问题

这篇回答两个问题: 1.为什么在 pycharm中打开新的project,切换interpreter 之后发现自己之前装的库消失了? 2.为什么 interpreter 切换到python3.8了, terminal 还是在 3.9?? 问题的关键:搞懂什…...

TP-LINK 路由器忘记密码 - 恢复出厂设置

TP-LINK 路由器忘记密码 - 恢复出厂设置 1. 恢复出厂设置2. 创建管理员密码3. 上网设置4. 无线设置5. TP-LINK ID6. 网络状态References 1. 恢复出厂设置 在设备通电的情况下,按住路由器背面的 Reset 按钮直到所有指示灯同时亮起后松开。 2. 创建管理员密码 3. 上网…...

关闭 Elasticsearch 集群的安全性设置

关闭 Elasticsearch 集群的安全性设置,特别是如果您正在使用 X-Pack,涉及到修改 Elasticsearch 的配置。以下是一般步骤,但请注意,这可能会使您的 Elasticsearch 集群面临安全风险,因此建议仅在开发或测试环境中执行此…...

[技术分享]一招解决 MySQL 中 DDL 被阻塞的问题

爱可生开源社区. 爱可生开源社区,提供稳定的MySQL企业级开源工具及服务,每年1024开源一款优良组件,并持续运营维护。 背景 之前碰到客户咨询定位DDL阻塞的相关问题,整理了一下方法,如何解决DDL被阻塞的问题。下面,就这个问题,整理了一下思路: 怎么判断一个 DDL 是…...

Windows搭建Emby媒体库服务器,无公网IP远程访问本地影音文件

文章目录 1.前言2. Emby网站搭建2.1. Emby下载和安装2.2 Emby网页测试 3. 本地网页发布3.1 注册并安装cpolar内网穿透3.2 Cpolar云端设置3.3 Cpolar内网穿透本地设置 4.公网访问测试5.结语 1.前言 在现代五花八门的网络应用场景中,观看视频绝对是主力应用场景之一&…...

自动化测试系列 之 Python单元测试框架unittest

一、概述 什么是单元测试 单元测试是一种软件测试方法,是测试最小的可测试单元,通常是一个函数或一个方法。 在软件开发过程中,单元测试作为一项重要的测试方法被广泛应用。 为什么需要单元测试 单元测试是软件开发中重要的一环&#xf…...

C语言朴素算法

#include <stdio.h> #include <string.h>// 朴素算法&#xff0c;用于字符串匹配 void naiveMatch(char* text, char* pattern) {int textLength strlen(text); // 计算文本串长度int patternLength strlen(pattern); // 计算模式串长度for …...

【力扣题解】P501-二叉搜索树中的众数-Java题解

&#x1f468;‍&#x1f4bb;博客主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 收录于专栏 【力扣题解】 文章目录 【力扣题解】P501-二叉搜索树中的众数-Java题解&#x1f30f;题目描述&#x1f4a1;题解&#x1f…...

Wnmp本地部署结合内网穿透实现任意浏览器远程访问本地服务

最近&#xff0c;我发现了一个超级强大的人工智能学习网站。它以通俗易懂的方式呈现复杂的概念&#xff0c;而且内容风趣幽默。我觉得它对大家可能会有所帮助&#xff0c;所以我在此分享。点击这里跳转到网站。 文章目录 前言1.Wnmp下载安装2.Wnmp设置3.安装cpolar内网穿透3.1…...

深信服AF防火墙配置SSL VPN

防火墙版本&#xff1a;8.0.85 需提前确认防火墙是是否有SSL VPN的授权&#xff0c;确认授权用户数量 1、确认内外网接口划分 2、网络→SSL VPN&#xff0c;选择内外网接口地址 3、SSL VPN→用户管理→新增一个SSL VPN的用户 4、新增L3VPN资源&#xff0c;类型选择Other&…...

在Spring Cloud中使用Gateway 网关

我们在上述文章中介绍了相关Spring Cloud的五大核心组件&#xff0c;现在我们来了解一下关于Spring Cloud的网关&#xff0c;关于使用网关&#xff0c;我们同时也需要知道他在一个架构中起到的作用&#xff0c;并且&#xff0c;我们需要知道网关具体的相关功能&#xff0c;本篇…...

【Python】配置环境变量

Python配置Windows系统环境变量 打开电脑属性 ——> 高级系统设置 ——> 高级 ——> 环境变量 Python安装目录 D:\Program Files\Python39 winR打开运行&#xff0c;输入cmd打开命令窗口 python -V...

使用.Net nanoFramework 驱动ESP32的OLED显示屏

本文介绍如何使用.Net nanoFramework 驱动ESP32的OLED显示屏。我们将会从最基础的部分开始&#xff0c;逐步深入&#xff0c;让你能够理解并实现整个过程。无论你是初学者还是有一定经验的开发者&#xff0c;这篇文章都会对你有所帮助。 1. 硬件准备 1.1 ESP32开发板 这里我们…...

0基础学习VR全景平台篇第134篇:720VR全景,云台调整节点

相机、云台和脚架全套设备组装完成后需要进行调校才能开始拍摄。这一节&#xff0c;我们将主要介绍云台调整的两个内容&#xff1a;对中心靶、调三点一线。&#xff08;后附调校原理&#xff09; 云台部件名称 一、调节准备 &#xff08;一&#xff09;对于安装好的云台 1.检…...

扫地机器人地图与用户终端的同步

以下内容为本人的学习笔记&#xff0c;如需要转载&#xff0c;请声明原文链接 微信公众号「ENG八戒」https://mp.weixin.qq.com/s/APaJheSbgTW3jNssWsp5Ng 地图数据来源于机器人算法模块&#xff0c;一般通过SLAM算法完成建图的过程。 建图过程中&#xff0c;基础数据涉及到各…...

使用机器学习进行语法错误检测/纠正

@francescofranco_39234 一、说明 一般的学习,特别是深度学习,促进了自然语言处理。各种模型使人们能够执行机器翻译、文本摘要和情感分析——仅举几个用例。今天,我们将研究另一个流行的用途:我们将使用Gramformer构建一个用于机器学习语法错误检测和纠正的管道。 阅读本文…...

从0到1快速入门ETLCloud

一、ETLCloud的介绍 ETL是将业务系统的数据经过抽取&#xff08;Extract&#xff09;、清洗转换&#xff08;Transform&#xff09;之后加载&#xff08;Load&#xff09;到数据仓库的过程&#xff0c;目的是将企业中的分散、凌乱、标准不统一的数据整合到一起&#xff0c;为企…...

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:

在 HarmonyOS 应用开发中&#xff0c;手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力&#xff0c;既支持点击、长按、拖拽等基础单一手势的精细控制&#xff0c;也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档&#xff0c…...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题&#xff1a;3564. 季节性销售分析 题目&#xff1a; 表&#xff1a;sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

Java入门学习详细版(一)

大家好&#xff0c;Java 学习是一个系统学习的过程&#xff0c;核心原则就是“理论 实践 坚持”&#xff0c;并且需循序渐进&#xff0c;不可过于着急&#xff0c;本篇文章推出的这份详细入门学习资料将带大家从零基础开始&#xff0c;逐步掌握 Java 的核心概念和编程技能。 …...

优选算法第十二讲:队列 + 宽搜 优先级队列

优选算法第十二讲&#xff1a;队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问&#xff08;基础概念问题&#xff09; 1. 请解释Spring框架的核心容器是什么&#xff1f;它在Spring中起到什么作用&#xff1f; Spring框架的核心容器是IoC容器&#…...