概述
NPM 或 Node Package Manager 是世界上最大的软件存储库,它使开发人员能够发布他们的包并使用其他人发布的包。包允许您向应用程序添加一些常用功能。如果您正在考虑向 Node 应用程序添加任何通用功能,那么很可能已经存在用于它的 NPM 包。在本文中,我们将了解 NPM 是什么,创建一个包并使用 npm publish 命令发布 NPM 包。
介绍
一个包可能包含一个或多个模块,它可以帮助我们向 Node 项目添加一些功能。包管理器用于管理所有项目依赖项。它帮助我们安装、升级、配置和删除项目中使用的各种依赖项。 NPM 或 Node Package Manager 是 NodeJS 的默认和最流行的包管理器。NPM 有一个 CLI 或命令行界面,用于安装和管理项目依赖项,以及一个托管各种 Javascript 包的在线存储库。
安装 NPM
NodeJS 安装程序包括 Node 和 NPM。因此,如果系统中已经安装了 Node,则可以在终端或命令提示符下使用以下命令来验证 NPM 安装:
npm -v
如果此命令记录错误,指出找不到命令,则需要按照下面讨论的步骤安装 NPM。否则,如果它记录了版本号,则表示已安装 NPM,您可以跳到本文的下一部分。
第 1 步:下载安装程序
进入 NodeJS 的官方网站,它会自动检测您的操作系统并显示您的操作系统支持的安装程序。 NodeJS 经常更新,具有新功能和性能改进,但由于频繁更新,它可能会不稳定。因此,始终建议使用最新的LTS(长期支持)版本,因为它更稳定可靠。
单击最新的 LTS 版本,NodeJS 安装程序将下载到您的系统中。
第 2 步:安装 NodeJS 和 NPM
在计算机上找到并打开 NodeJS 安装程序。您将看到将安装 NodeJS 和 NPM 的目录的版本和位置。点击继续
现在,系统会提示您接受软件许可协议。
在下一个屏幕上,将显示安装所需的磁盘空间。要更改安装位置,您可以单击“更改安装位置”并选择您选择的安装位置,最后单击“安装”
这样,Node 和 NPM 就成功安装在您的系统上。现在,您可以关闭安装程序。
步骤 3:验证安装
打开终端或命令提示符,然后键入 node -v 以检查计算机上安装的 Node 版本。
> node -v
v16.17.0
现在,要检查 NPM 的版本,请使用 npm -v
> npm -v
8.15.0
这样,您就已成功在计算机上安装了 Node 和 NPM。
选择包名称
NPM 包名称可以是有作用域的,也可以是无作用域的。作用域是一种将相关包组合在一起的方法。每个注册用户和组织在 NPM 中都有自己的范围。只有有权访问该范围的用户才能发布具有该特定范围的 NPM 包。 作用域内的包名称通常引用为:
@<scope-name>/<package-name>
在创建新的包存储库之前,应检查 NPM 上是否已存在同名包。对于无作用域的包,包名称必须始终是唯一的。同样,不能在同一作用域中有两个同名的包。但是,如果存在名为 my-package 的无作用域包,则可以在不同作用域 @myscope/my-package 中创建具有相同名称的新包
创建您的第一个软件包
让我们创建并发布一个 NPM 包来计算给定字符串中的字数。创建一个新的目录字计数器并初始化 NPM。
mkdir word-counter
cd word-counter
npm init
然后,它会提示您添加包详细信息,例如包名称、版本、描述、git 存储库等。如果你想跳过这些,你可以直接使用 npm init -y 使用其默认值初始化包。 这将创建一个名为 package.json 的文件。它是存在于每个 Node 项目的根目录中的 JSON 文件,包含项目名称、描述、版本等重要信息。它还包含运行项目所需的所有依赖项的列表。 现在,在根目录中,创建一个新的文件index.js。在此文件中,我们将导出一个函数,该函数计算作为参数传递给此函数的字符串中的单词数。
module.exports.countWords = (str) => {
//Creates an array of words by splitting the string whenever a space is encountered
const arrayOfWords = str.split(' ');
//Return the length of the array i.e. number of words in the string
return arrayOfWords.length;
}
因此,我们已经成功创建了一个简单的包,在下一节中,我们将学习如何发布这个 NPM 包。
将包发布到 NPM
要发布 NPM 包,我们需要在其网站上创建一个帐户。如果您还没有帐户,请转到他们的注册页面并输入所有必需的详细信息以创建新帐户。 创建新帐户后,您需要在 CLI 中登录 NPM。在终端中,运行
npm login
CLI 将提示您输入用户名、密码和电子邮件。输入这些详细信息后,您应该登录到您的 NPM 帐户。现在,若要将包发布到 NPM,请确保位于包目录的根目录中并运行
npm publish
如果在运行此命令后收到错误,则很可能是 NPM 上已存在同名包。在这种情况下,您需要将 package.json 中的包名称更改为唯一名称。 如果包发布成功,可以去NPM的网站搜索包名;您应该会看到那里列出的包。
使用已发布的包
现在,让我们创建一个新的 Node 项目 word-counter-test,并尝试在我们的项目中使用我们新发布的 NPM 包。首先,让我们从创建一个新目录并初始化 NPM 开始。
mkdir word-counter-test
cd word-counter-test
npm init -y
由于我们的包已经在 NPM 上发布,因此我们可以使用 npm install 命令将包安装在我们的项目中。在下面的命令中,将 word-counter 替换为您的包名称
npm install word-counter
现在,创建一个新的文件index.js。在这个文件中,我们将导入我们的包并使用包中定义的 countWords() 方法
const { countWords } = require('word-counter');
const str = 'This is a string to test the word counter';
const noOfWords = countWords(str);
console.log('No of words', noOfWords);
在终端中,运行节点index.js,字符串中的字数应记录在终端中。
取消发布程序包
在 NPM 上发布包后,其他开发人员可能已经在使用它。因此,通常不建议取消发布包。因此,只有在没有其他 NPM 包依赖于你的包时,才能在 72 小时内取消发布 NPM 包。如果一个软件包只有一个维护者,并且前一周的下载次数不超过 300 次,则该软件包只能在 72 小时后取消发布。
若要取消发布 NPM 包,请运行以下命令
npm unpublish <package-name> -f
此命令将从 NPM 中删除包。如果要删除包的单个版本,可以改用以下命令:
npm unpublish <package-name>@<version> -f
结论
- NPM 是世界上最大的软件注册中心,拥有超过 210 万个软件包。
- 它还有一个 CLI 工具,可帮助安装、配置和管理 Node 应用程序中使用的所有软件包。
- 您应该始终使用最新的 Node LTS(长期支持)版本,因为它更稳定、更可靠,因为 LTS 版本保证至少 30 个月收到关键错误修复。
- 一个包可以包含一个或多个文件,这些文件向 Node 项目添加某些功能。包必须始终具有要发布到 npm 注册表的package.json文件。
- package.json文件以人类可读的JSON格式包含有关Node项目的所有元数据。
- 可以使用 npm publish 命令发布 NPM 包,并使用 npm install 命令进行安装。
- 不建议取消发布已发布的 Node 包,因为其他开发人员可能已经在其 NPM 包或其他项目中使用了您的包。