npm、pnpm、yarn之间的区别
2024-1-12 08:3:52 Author: Docker中文社区(查看原文) 阅读量:4 收藏

链接:https://juejin.cn/post/7307471563205083176

1 引言

平时在项目开发中,经常用到npm、pnpm、yarn这些来安装包,但是它们之间到底有什么区别呢,一直没太搞明白。

我只知道他们都是可以从npm官网上下载包,安装完包咱们就可以写代码了,其他的不觉明历,所以认为需要总结下。

2 npm

npm(Node Package Manager)是Node.js的默认包管理器。它是一个成熟、广泛使用的工具,有着大量的开源包。

2.1 特点

  • 默认随Node.js一起安装,无需额外配置。

  • 提供了庞大的包生态系统,有大量的第三方包可用。

  • 默认将依赖项安装到项目的node_modules目录中。

2.2 使用实例


npm install lodash

npm install -g create-react-app

npm list

npm cache clean

3 pnpm

pnpm 是一种较新的包管理工具,旨在解决npm中的依赖项重复安装的问题。

3.1 特点

  • 默认随Node.js一起安装,无需额外配置。

  • 提供了庞大的包生态系统,有大量的第三方包可用。

  • 默认将依赖项安装到项目的node_modules目录中。

3.2 使用实例

# 在项目中安装依赖项pnpm add lodash
# 全局安装包pnpm add -g create-react-app
# 查看已安装的包pnpm list
# 清空缓存pnpm cache clean

4 yarn

yarn 是由Facebook提供的包管理工具,旨在提高性能和安全性。

4.1 特点

  • 并行下载、离线安装,提高安装速度。

  • 锁定版本以确保不同环境中获得相同的依赖版本。

  • 具有强大的命令行工具和用户界面。

4.2 使用实例

# 在项目中安装依赖项yarn add lodash
# 全局安装包yarn global add create-react-app
# 查看已安装的包yarn list
# 清空缓存yarn cache clean

5 比较

5.1 安装速度

  • npm: 相对较慢,特别是在有大量依赖项的项目中。

  • pnpm: 安装速度较快,尤其在多项目工作区中。

  • yarn: 使用并行下载,速度相对较快。

5.2 磁盘空间占用

  • npm: 默认将依赖项复制到项目的node_modules目录,可能导致重复占用磁盘空间。

  • pnpm: 通过符号链接共享依赖项,减少了磁盘空间占用。

  • yarn: 在离线模式下,通过缓存机制减少了磁盘空间占用

5.3 并发安装

  • npm: 不支持并发安装,会一个一个地安装依赖项。

  • pnpm: 支持并发安装,提高了安装速度。

  • yarn: 使用并行下载,速度相对较快。

5.4 稳定性

  • npm: 稳定、成熟,广泛使用。

  • pnpm: 相对较新,但社区正在不断发展。

  • yarn: 由Facebook维护,稳定性较高。

小结

npm是默认选择,稳定且易于使用。pnpm通过共享依赖项减少磁盘空间占用,适用于需要优化空间的项目。yarn通过并行下载和版本锁定提供了更快、更可靠的安装。至于用什么,看我们个人喜好。然后有一点,最好不要混用,不然会有未知的错误,至少我在单一的情况只用一种来管理还是没有遇到啥错误的。

推荐阅读 点击标题可跳转

《Docker是什么?》

《Kubernetes是什么?》

《Kubernetes和Docker到底有啥关系?》

《教你如何快捷的查询选择网络仓库镜像tag》

《Docker镜像进阶:了解其背后的技术原理》

《教你如何修改运行中的容器端口映射》

《k8s学习笔记:介绍&上手》

《k8s学习笔记:缩扩容&更新》

《Docker 基础用法和命令帮助》

《在K8S上搭建Redis集群》

《灰度部署、滚动部署、蓝绿部署》

《Docker垃圾清理》

《Kubernetes(k8s)底层网络原理刨析》

《容器环境下Node.js的内存管理》

《Linux 与 Unix 到底有什么不同?》

《浅谈几种常见 RAID 的异同》

《Docker中Image、Container与Volume的迁移》

《漫画|如何用Kubernetes搞定CICD》

《写给前端的Docker实战教程》

《16个概念带你入门 Kubernetes》


免责声明:本文内容来源于网络,所载内容仅供参考。转载仅为学习和交流之目的,如无意中侵犯您的合法权益,请及时联系Docker中文社区!



文章来源: http://mp.weixin.qq.com/s?__biz=MzI1NzI5NDM4Mw==&mid=2247496715&idx=1&sn=82d4fe52bd625933581da38bc3296ce1&chksm=eb757f170945a10baec6d44168587dae098ba652747ba2e981c16a04337dba38e620fbbd5c35&scene=0&xtrack=1#rd
如有侵权请联系:admin#unsafe.sh