安装 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.js | pnpm 5 | pnpm 6 | pnpm 7 | pnpm 8 |
|---|---|---|---|---|
| Node.js 12 | ✔️ | ✔️ | ❌ | ❌ |
| Node.js 14 | ✔️ | ✔️ | ✔️ | ❌ |
| Node.js 16 | ?️ | ✔️ | ✔️ | ✔️ |
| Node.js 18 | ?️ | ✔️ | ✔️ | ✔️ |
| Node.js 20 | ?️ | ?️ | ✔️ | ✔️ |
功能比较
| 功能 | pnpm | Yarn | npm |
|---|---|---|---|
| 工作空间支持(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
一、概述 什么是单元测试 单元测试是一种软件测试方法,是测试最小的可测试单元,通常是一个函数或一个方法。 在软件开发过程中,单元测试作为一项重要的测试方法被广泛应用。 为什么需要单元测试 单元测试是软件开发中重要的一环…...
C语言朴素算法
#include <stdio.h> #include <string.h>// 朴素算法,用于字符串匹配 void naiveMatch(char* text, char* pattern) {int textLength strlen(text); // 计算文本串长度int patternLength strlen(pattern); // 计算模式串长度for …...
【力扣题解】P501-二叉搜索树中的众数-Java题解
👨💻博客主页:花无缺 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 花无缺 原创 收录于专栏 【力扣题解】 文章目录 【力扣题解】P501-二叉搜索树中的众数-Java题解🌏题目描述💡题解…...
Wnmp本地部署结合内网穿透实现任意浏览器远程访问本地服务
最近,我发现了一个超级强大的人工智能学习网站。它以通俗易懂的方式呈现复杂的概念,而且内容风趣幽默。我觉得它对大家可能会有所帮助,所以我在此分享。点击这里跳转到网站。 文章目录 前言1.Wnmp下载安装2.Wnmp设置3.安装cpolar内网穿透3.1…...
深信服AF防火墙配置SSL VPN
防火墙版本:8.0.85 需提前确认防火墙是是否有SSL VPN的授权,确认授权用户数量 1、确认内外网接口划分 2、网络→SSL VPN,选择内外网接口地址 3、SSL VPN→用户管理→新增一个SSL VPN的用户 4、新增L3VPN资源,类型选择Other&…...
在Spring Cloud中使用Gateway 网关
我们在上述文章中介绍了相关Spring Cloud的五大核心组件,现在我们来了解一下关于Spring Cloud的网关,关于使用网关,我们同时也需要知道他在一个架构中起到的作用,并且,我们需要知道网关具体的相关功能,本篇…...
【Python】配置环境变量
Python配置Windows系统环境变量 打开电脑属性 ——> 高级系统设置 ——> 高级 ——> 环境变量 Python安装目录 D:\Program Files\Python39 winR打开运行,输入cmd打开命令窗口 python -V...
使用.Net nanoFramework 驱动ESP32的OLED显示屏
本文介绍如何使用.Net nanoFramework 驱动ESP32的OLED显示屏。我们将会从最基础的部分开始,逐步深入,让你能够理解并实现整个过程。无论你是初学者还是有一定经验的开发者,这篇文章都会对你有所帮助。 1. 硬件准备 1.1 ESP32开发板 这里我们…...
0基础学习VR全景平台篇第134篇:720VR全景,云台调整节点
相机、云台和脚架全套设备组装完成后需要进行调校才能开始拍摄。这一节,我们将主要介绍云台调整的两个内容:对中心靶、调三点一线。(后附调校原理) 云台部件名称 一、调节准备 (一)对于安装好的云台 1.检…...
扫地机器人地图与用户终端的同步
以下内容为本人的学习笔记,如需要转载,请声明原文链接 微信公众号「ENG八戒」https://mp.weixin.qq.com/s/APaJheSbgTW3jNssWsp5Ng 地图数据来源于机器人算法模块,一般通过SLAM算法完成建图的过程。 建图过程中,基础数据涉及到各…...
使用机器学习进行语法错误检测/纠正
@francescofranco_39234 一、说明 一般的学习,特别是深度学习,促进了自然语言处理。各种模型使人们能够执行机器翻译、文本摘要和情感分析——仅举几个用例。今天,我们将研究另一个流行的用途:我们将使用Gramformer构建一个用于机器学习语法错误检测和纠正的管道。 阅读本文…...
从0到1快速入门ETLCloud
一、ETLCloud的介绍 ETL是将业务系统的数据经过抽取(Extract)、清洗转换(Transform)之后加载(Load)到数据仓库的过程,目的是将企业中的分散、凌乱、标准不统一的数据整合到一起,为企…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
【kafka】Golang实现分布式Masscan任务调度系统
要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...
从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...
C++八股 —— 单例模式
文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性…...
什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...
