您还未登录! 登录 | 注册 | 帮助  

您的位置: 首页 > 软件开发专栏 > 开发技术 > 正文

为什么您可能想要使用不止一个Node软件包管理器?

发表于:2023-03-15 作者:布加迪 来源:51cto

译者 | 布加迪

审校 | 孙淑娟​

Node最好的特性之一是软件包管理器。有许多不同的方法来安装和管理Node软件包,本文介绍使用一个或多个软件包管理器各自的优缺点,以及结合使用软件包管理器的几个最佳方法。​

软件包管理器简介

在软件开发领域,依赖项是运行项目所必需的,它们如同食谱配料一样不可或缺。

假设您在编写一个使用JavaScript的应用程序,它想要访问来自jQuery库(许多网站曾经使用jQuery库)的一些函数,那么jQuery将是您的依赖项之一。您需要安装jQuery,这样有人访问您的网站时,可以看到您用它创建的那些很酷的动画或交互元素!

软件包管理器通过为我们管理依赖项来帮助管理这些项目之间的关系,所以每当我们想要添加或更新内容时,不必为自己手动下载而操心,它们还确保在安装后一切都能正常工作、顺畅运行(这有时说起来容易做起来难)。​

Node预装软件包管理器NPM

 

 

NPM是默认的软件包管理器,因此它被内置到Node运行时环境中。您可以使用NPM直接从GitHub网站或NPM安装软件包,也可以将您的软件包发布到这个网站,这样其他人就可以使用自己版本的NPM来安装它们。​

NPM不仅仅用于安装软件,还可以处理应用程序代码库中两个或多个所需库或模块之间的依赖项解析和版本冲突。​

这意味着,如果在您的服务器上随时有Express之类的多个版本在运行,NPM将确保每个实例得到它所需的东西,不会与从事类似任务的其他实例发生冲突,而且根本不需要您采取任何特殊的操作,只需要在需要时对对象调用require() !​

NPM是一种功能很强大的工具,很容易上手。但是如果您刚接触Node和JavaScript,了解哪些工具可供使用以及哪些工具最适合某个项目可能具有挑战性。​

NPM的主要问题是,软件包安装起来很慢。如果您只是运行一两个偶尔的脚本,这不是大问题,但如果您试图构建一个使用数十个不同库和工具的完整应用程序,这可能会让人备感沮丧。​

Yarn和PNPM比NPM更快

 

 

Yarn是可以替代NPM的一种安全可靠的方案,它使用锁文件来防止意外覆盖,并确保在安装软件包时正确解析依赖项。​

安装起来也比NPM快,如果您处理的大型项目涉及拥有众多依赖项的许多模块,这点尤其有用。​

PNPM是Yarn和NPM的替代者,但它的人气还不是很旺,因为它没有其中任何一个的一些功能(比如锁文件)。然而其开发人员声称,由于具有轻量级特性,PNPM安装软件包的速度比Yarn或NPM快四倍,这也意味着您的计算机上少占用磁盘空间!​

如果您在构建的项目只需要少量依赖项,那么Yarn或NPM可能就足够了。但是如果您在处理的大型项目涉及许多模块和依赖项,那么PNPM可能是更好的选择。​

使用多个软件包管理器的优点

一个软件包管理器一次只能处理任何某个库的一个版本。如果您希望为其他项目或不同的环境(比如生产环境与开发环境)使用同一个库的两个不同版本,那么需要在系统上安装两个单独的软件包。

 

 

如果两个软件包同时试图更新相同依赖项的版本,可能导致冲突。使用多个软件包管理器意味着您可以更好地控制安装哪些依赖项以及安装位置,这有助于避免此类冲突。​

另一个好处是,使用多个软件包管理器时,每个软件包管理器都将提供各自独特的功能特性。一些软件包管理器可能更快,一些可能拥有更好的依赖项管理功能,另一些则可能更适合使用某些框架(比如ReactJS或VueJS)开发应用程序。​

最后,使用多个软件包管理器可以减少搜索和安装依赖项所花费的时间,从而帮助提高开发人员的工作效率,这是由于每个软件包管理器在设计时都考虑到针对一组特定的用例(比如侧重速度、安全或依赖项管理等方面)。​

通过全局安装,使用多个软件包管理器

 

 

使用命令行,您可以指定要为特定项目使用哪个软件包管理器。在系统上安装多个软件包管理器:​

  • Node预装有NPM。这将允许您从命令行安装其他软件包及软件包管理器,并使用NPM管理所有项目的依赖项。如果您想在Webpack等浏览器中运行NPM脚本,它也很有帮助,因为浏览器并不预装NPM !​
  • 使用NPM全局安装Yarn。这是管理JavaScript项目中依赖项的另一个常见方法,它较之NPM具有几个优点,可能使它更适合某些类型的项目或团队。​
  • 最后,安装PNPM。该软件包管理器是NPM的分支,旨在更快速、更稳定。它还有一些额外的功能,可能对某些类型的项目很有用,比如支持来自GitHub的依赖项。​

注意,全局安装意味着所选择的软件包可供整个系统使用(您可以通过命令行在任何地方访问程序),而本地安装只能由当前工作目录访问。​

使用多个软件包管理器的实例

不妨看看这些用法:​

1. Yarn和NPM可以一起使用(比如create-react-app)​

如果您想要充分利用Yarn的速度和效率,同时仍与NPM软件包保持兼容性,这种方法非常有用。如果您需要一个还没有更新的库的最新版本与Yarn兼容,或者如果您的团队因其他原因而宁愿坚持使用NPM,尽管速度较慢或功能有限,那么这可能很适合您的项目。这种方法还有助于避免您的单一代码库(mono repo)环境中有两棵独立的依赖树!​

2. 将Yarn用于全局软件包,将PNPM用于本地安装​

虽然PNPM是最快的软件包管理器,但用于全局安装的软件包可能有些棘手。这是由于它使用不同的文件结构,可能会导致与Visual Studio Code等程序之间的兼容问题,这时候Yarn就有了用武之地。可以将Yarn用于全局安装的软件包,将PNPM用于本地安装。这个解决方案是集两个软件包管理器的优点于一体的好方法,不必大幅改动工作流程。有了这种方案,您可以从系统中完全删除NPM(拥有NPM这个备份始终是好主意)。​

3.使用PNPM和NPM作为后备​

如果您想使用PNPM,又不想让所有开发人员都得学习一种新工具,这是一种值得考虑的好选择。它允许开发人员继续使用NPM,直到他们熟悉PNPM、需要它来完成工作。​

使用多个软件包管理器让事情变得更简单

您可以使用多个软件包管理器;可以在全局或本地安装,如果您想指定哪个软件包管理器应该用于某个项目,只需使用命令行!​

如果您想在系统上安装多个软件包管理器,确保使用的是同一版本的Node.js。​

总之,我们认为您应该使用多个软件包管理器。如果您已经熟悉NPM,这是开始上手Node和学习一些新工具的好方法。如果您还没有安装Node,在Windows上安装其实很简单。​

原文标题:​Why You’ll Probably Want To Use More Than One Node Package Manager​,作者:Brian Walker