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

你可能感兴趣的:(web前端,javascript,开发语言,ecmascript)