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

译文
开发 前端
本文解释了为何使用多个Node软件包管理器是个好主意。

译者 | 布加迪

审校 | 孙淑娟

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

软件包管理器简介

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

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

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

Node预装软件包管理器NPM

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

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

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

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

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

Yarn和PNPM比NPM更快

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

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

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

如果您在构建的项目只需要少量依赖项,那么YarnNPM可能就足够了。但是如果您处理的大型项目涉及许多模块和依赖项,那么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

责任编辑:华轩 来源: 51CTO
相关推荐

2021-02-28 13:26:15

Linux软件包管理器软件仓库

2010-01-05 10:14:09

Ubuntu软件包

2010-01-06 16:33:24

Ubuntu软件包

2010-02-05 14:46:20

Ubuntu软件包

2020-06-01 07:00:00

WingetWindows 10软件包管理器

2010-03-17 13:42:41

Fedora Core

2021-01-30 09:23:27

Windows操作系统微软

2021-05-28 16:00:45

Windows操作系统微软

2011-11-15 09:22:20

Solaris 11

2020-06-28 13:56:01

UbuntuAptSynaptic

2020-05-20 16:01:45

Windows 10软件包管理器微软

2021-11-11 11:13:20

js Npm基础

2010-03-17 13:53:35

Fedora Core

2018-11-22 08:00:00

Linux软件包管理器Nix

2020-06-15 19:20:00

AppImageLinux软件包管理

2020-05-29 10:15:17

开发者微软Windows

2021-04-25 18:41:17

Windows软件包管理器微软

2020-02-20 16:42:40

云端Kubernetes容器

2021-11-29 14:26:53

FreeDOSLinux

2010-01-11 17:49:08

Fedora软件包
点赞
收藏

51CTO技术栈公众号