JavaScript包管理器分类和区别

一、JavaScript包管理器分类

  • NPM
  • Yarn
  • PNPM
  • Bun

二、包管理器的区别

1、NPM

是Node.js的默认包管理器,默认随Node.js一起安装,无需额外配置。

npm2

采用简单的递归依赖方法,最后形成高度嵌套的依赖树。然后就会造成如下问题:重复依赖嵌套地狱,空间资源浪费,安装速度过慢,文件路径过长等问题。

npm3

采取扁平化的依赖结构。这样的依赖结构可以很好的解决重复依赖的嵌套地狱问题,但是却出现扁平化依赖算法耗时长这样新的问题

npm5

为了解决上面出现的扁平化依赖算法耗时长问题,npm 引入 package-lock.json 机制,package-lock.json 的作用是锁定项目的依赖结构,保证依赖的稳定性

  • 缺点:
    • 不支持并发安装,会一个一个地安装依赖项
    • 相对较慢
    • 默认将依赖项复制到项目的node_modules目录,可能导致重复占用磁盘空间
# 在项目中安装依赖项
npm install lodash# 全局安装包
npm install -g create-react-app# 查看已安装的包
npm list# 清空缓存
npm cache clean

2、Yarn: 旨在提高性能和安全性

  • 优点
    • 并行(异步)下载、离线安装(安装缓存),提高安装速度
    • 锁定版本以确保不同环境中获得相同的依赖版本

3、PNPM: 解决了npm中的依赖项重复安装的问题

pnpm 内部使用基于内容寻址的文件系统来存储磁盘上所有的文件,这样可以做到不会出现重复安装,在项目中需要使用到依赖的时候,pnpm 只会安装一次,之后再次使用都会直接硬链接指向该依赖,极大节省磁盘空间,并且加快安装速度

  • 优点:

    • 安装速度快
    • 节省磁盘空间【可循的存储地址】
    • 支持并发安装,提高了安装速度
  • 缺点:

  • 用法:

    • 启动项目: pnpm run dev or pnpm dev
    • 安装全部依赖: pnpm i
    • 安装部分依赖:pnpm i axios or pnpm add axios
    • 卸载依赖: pnpm remove or pnpm rm or pnpm uninstall or pnpm un
  • pnpm 还能管理 nodejs 版本,可以直接替代 nvm


# 安装 LTS 版本
pnpm env use --global lts
# 安装指定版本
pnpm env use --global 16

4、Bun

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

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

相关文章

【JavaSE】网络编程(学习笔记)

一、网络编程概述 网络编程:网络互联的计算机实现数据交换 1、网络编程三要素 1)IP IP:网络中设备的唯一标识 cmd -> ipconfig:查看本机ip cmd -> ping ip地址:检查网络是否连通 127.0.0.1:回送地…

Ubuntu环境下使用nginx实现强制下载静态资源

安装Nginx sudo apt update sudo apt install nginx关闭防火墙 sudo ufw allow Nginx HTTP修改nginx配置 cd /etc/nginx/conf.d vi nginx.conf在http配置中添加(/your path/为需要下载的文件路径) server {listen 80;server_name localhost;location / {root /your path/…

convert_from_pinhole_camera_parameters 失败

函数convert_from_pinhole_camera_parameters 在0.17版本中有bug。 应该说是,直接使用pip install open3d 的0.17版本有问题,在git code中已经修复,需要下载后用pip安装。希望pip赶紧更新。。。。 参考: Fix the pybind refer…

WPS Office JS宏实现批量处理Word中的标题和正文的样式

该篇讲解下word文档中的标题和正文批量修改样式,如下图: 前面一篇已讲解了WPS Office宏编辑器操作方法,这里不细讲了,如有不清楚可以查看该篇:https://blog.csdn.net/jiciqiang/article/details/134653657?spm1001.20…

Install4J安装界面中如何使用脚本找到依赖程序XShell的安装位置

前言 写了一个工具, 使用Install4j打包, 但因为需要用到XShell, 所以希望在安装界面能够提前让用户配置好XShell的安装位置, 所以对Install4j的安装界面需要自定义, 后期在程序中直接过去安装位置就可以正常使用. 调研 和git-bash不一样, 安装版的XShell没有在注册表里存储安…

Ubuntu系统下使用apt-get安装Redis

记录一下Ubuntu20.04 64位系统下使用apt-get安装Redis 首先检查一下系统是否安装过redis whereis redismywmyw-K84HR:~$ whereis redis redis: mywmyw-K84HR:~$ 更新软件包 sudo apt-get update -y安装redis sudo apt-get install redis-server -ymywmyw-K84HR:~$ sudo apt…

数字ic设计技巧:添加debug信号

数字ic设计技巧:添加debug信号 文章目录 数字ic设计技巧:添加debug信号1. 握手方式读取数据的debug信号o_wait_read2. FIFO的空满信号3. 输入错误4. 多状态机的debug信号5. 使用FIFO记录log 在数字ic设计的过程中,我们常常通过添加一些debug信…

Java常见CodeReview及编码规范

鉴于自己的开发经验,以及常见容易产生bug及性能问题的点做个记录. 1.数据库 如果开发人员的经验不足,Java通过ORM(Mybatis)对数据库的操作的性能问题比较隐蔽.因为不压测或者异常case没发生的时候一般发现不了问题.特别是异常case发生的时候. 除配置表以外的sql都要经过expl…

LINQ【C#】

1LINQ概述: 集成查询,在对象领域和数据领域之间架起了一座桥梁。 LINQ主要由3部分组成:LINQ to ADO.NET、LINQ to Objects和LINQ to XML。其中,LINQ to ADO.NET可以分为两部分:LINQ to SQL 和LINQ to DataSet。 var…

Learning Memory-guided Normality for Anomaly Detection 论文阅读

Learning Memory-guided Normality for Anomaly Detection 摘要1.介绍2.相关工作3.方法3.1网络架构3.1.1 Encoder and decoder3.1.2 Memory 3.2. Training loss3.3. Abnormality score 4.实验5.总结总结&代码复现: 文章信息: 发表于:cvpr…

消息中间件之间的区别

一.单机吞吐量 ActiveMQ:万级,吞吐量比RocketMQ和Kafka要低了一个数量级 RabbitMQ:万级,吞吐量比RocketMQ和Kafka要低了一个数量级 RocketMQ:10万级,RocketMQ也是可以支撑高吞吐的一种MQ Kafka&#xff…

Python的requests库实现HTTPS

嘿,Python程序员们!今天我们要来点刺激的——使用Python的requests库实现HTTPS请求!是的,你没有听错,我们要一起迈入HTTPS的神秘世界! 首先,我们来了解一下HTTPS是什么。HTTPS是HTTP Secure的缩…

BUU SQL COURSE 1

四 发现有登录框,爆破半天也爆破不出来,只能从别的地方下手了 F12一下 发现了一个传参 进去发现id可以传参,sql注入一下试试 前三个都有回显,当id4的时候页面没有回显了,正好验证 了页面 有三个新闻 当order by 3的时…

ROS-ROS通信机制-服务通信

文章目录 一、服务通信基本知识二、自定义srv三、C实现四、Python实现 一、服务通信基本知识 服务通信也是ROS中一种极其常用的通信模式,服务通信是基于请求响应模式的,是一种应答机制。也即: 一个节点A向另一个节点B发送请求,B接收处理请求…

我想修改vCenter IP地址

部署vCenter Server Appliance后,您可以在vCenter修改DNS设置并选择域名服务器使用。您可以编辑vCenter Server Appliance的IP地址设置。从vSphere 6.5开始正式支持vCenter修改IP地址。因此可以更改vCenter Server Appliance的IP地址和DNS设置。 注意:更…

Vue--第六天

vuex概述: 组件通信感觉有点白雪。。。。。。。。。。 创建项目: 为了学习简介,先选几个,后续是要勾选很多的 建好后再进行组件导入 创建空仓库: 使用: 上面是store访问,下面是辅助函数的方式…

[LeetCode] 167. 两数之和 II - 输入有序数组

167. 两数之和 II - 输入有序数组 题干 给你一个下标从 1 开始的整数数组 numbers ,该数组已按 ** 非递减顺序排列 **,请你从数组中找出满足相加之和等于目标数 target 的两个数。如果设这两个数分别是 numbers[index1] 和 numbers[2] ,则 …

centos 7.9 二进制部署 kubernetes v1.27.7

文章目录 1. 预备条件2. 基础配置2.1 配置root远程登录2.2 配置主机名2.3 安装 ansible2.4 配置互信2.5 配置hosts文件2.6 关闭防firewalld火墙2.7 关闭 selinux2.8 关闭交换分区swap2.9 修改内核参数2.10 安装iptables2.11 开启ipvs2.12 配置limits参数2.13 配置 yum2.14 配置…

HarmonyOS学习--TypeScript语言学习(二)

本章目录如下: 一、基础类型 二、运算符 三、变量声明 四、类型断言 五、类型推断 TypeScript支持一些基础的数据类型,如布尔型、数组、字符串等,下文举例几个较为常用的数据类型,我们来了解下他们的基本使用。 关于let 我们…

ctfshow sql 186-190

186大小写绕过 1 order by 3-- 发现union select被过滤,用大小写来绕过 1 union seleCT 1,2,database() --1 union seleCT 1,2,table_name from information_schema.tables where table_schemactfshow_web --1 union seleCT 1,2,column_name from information_schem…