• 首页
  • 分类
  • 归档
  • 作品
  • 关于

关于包管理器的随笔

在前端开发的繁杂工作中,包管理器是每个开发者不可或缺的工具。它们帮助我们获取和删除依赖,为项目组装一切所需。然而,也正是因为其常见,我们往往忽视了一些潜在的问题。本文的撰写,源于我们的项目在一次部署前夕,因为同时使用yarn和npm打包而出现了一些不预期的问题。本文的目的,就是对包管理器进行深入理解和对比,以帮助我们更好的选择和使用。

写这篇文章的原因是因为我们的项目在上线部署前要经过一系列严格的检测,这里面牵扯到了项目同时能使用yarn和npm打包。但是因为打包后某些依赖的版本出现了不一致的问题。之后详细了解了yarn和npm后决定写下这篇文章。

起初,我曾以为只要掌握一种包管理器,比如npm,就足以应对日常开发的需求。毕竟,npm是随Node.js一起安装的,使用起来非常便捷。然而,一次与yarn的偶然接触,让我发现了npm之外的另一种可能。

yarn,尽管被视为一种新兴的包管理器,但它实际上已经具备了许多值得称赞的特性。与npm相比,yarn的安装速度更快,因为它采用了并行下载策略,并支持本地缓存。这意味着如果安装相同的依赖包,yarn会直接从缓存中获取,而不是重新下载。这些特性使得yarn在大型项目的开发中具有显著的优势。

这也是大多数人选择yarn的原因。

包管理器的对比

下面对他们进行一些总结

npm

  1. 社区庞大,可用的包数量丰富。
  2. 可以轻松地从npm registry下载和安装软件包。
  3. 内置了很多有用的功能,例如脚本和命令别名。
  4. 比较成熟稳定,适合大型项目。

缺点

  1. 安装速度相对比较慢,因为它需要先下载包,再进行安装。
  2. 在同一个项目中多个依赖包可能会出现版本冲突问题。
  3. 卸载包时可能会导致依赖关系链过长,使得卸载的效率变低。

pnpm

pnpm 是一个快速、轻量级的、基于硬链接的包管理工具,它的大部分功能与npm相同,由于其特殊的工作机制,它可以极大地提高包安装和卸载的速度。

  1. 安装速度非常快,因为它使用硬链接存储依赖项。
  2. 所需磁盘空间非常小,因为它不会重复存储相同版本的模块。
  3. 可以同时管理多个项目的依赖关系,而且不会出现版本冲突问题。
  4. 具有良好的稳定性和可靠性,适合企业级开发项目使用。

缺点

  1. 由于其较新,一些npm插件可能不支持pnpm。
  2. 不支持所有npm功能。

yarn

yarn 是一个由 Facebook 开发的包管理工具,目的是解决npm在某些方面的缺陷,并改进了速度和安全性等方面。

  1. 安装速度非常快,因为它可以并行下载和安装依赖包。
  2. 支持离线安装,即使没有网络连接也能安装依赖包
  3. 内置良好的安全检查功能,可以避免安全风险。
  4. 与npm相比,yarn可以更准确地确定依赖关系,从而避免版本冲突问题。

缺点

  1. 对于少数的一些依赖包,可能会出现兼容性问题。
  2. 在某些情况下,与npm不兼容。
npmyarnpnpm
安装速度慢快快
磁盘占用大小小
离线安装不支持支持支持
版本锁定支持支持支持
产生版本冲突会不会不会
生态强强略强

在使用npm、pnpm和yarn之前,需要考虑自己的项目需求。如果您需要一个可靠且稳定的包管理工具,并且您的项目是大型的企业级应用程序,则应使用npm或者pnpm。如果您需要一个快速、高效且安全的包管理工具,并且您的项目相对较小,则应该使用yarn。

总结而言,这三种包管理工具各有优缺点,具体选择哪个取决于具体需求。

npm与yarn的转换

如果也有同时需要npm与yarn都能拉取依赖且需要拉取的版本相同的需求,那么可以考虑sync这个插件,作用是转换

npm i synp -g //大家都会的安装,这个要使用全局安装

在项目同级目录下输入以下命令

yarn.lock => package-lock.json

synp --source-file yarn.lock

package-lock.json => yarn.lock

synp --source-file package-lock.json

npm源管理工具

nrm 是一个 npm 源管理器,允许你快速地在 npm源间切换。

既然说到这儿了 ,那就也说一下关于nrm的事,毕竟还有一大部分人还在使用直接设置淘宝镜像的方式。那么如何使用nrm呢

npm i nrm -g 

如果能通过nrm -v 查看版本就说明安装成功了

使用 nrm ls 就能看到和选择要使用的源

不过没办法配置yarn,想要能够配置yarn有一个yrm工具,貌似yarn和npm都可以配置。

文章参考:

npm/yarn lock真香

包管理器npm、pnpm、yarn优缺点比较

一个比 nrm 更好用的镜像源管理工具