分步指南:如何创建和发布 NPM 包。
NPM(Node 包管理器)包是 Node.js 的重要组成部分。它们允许开发者与更广泛的 Node.js 社区共享解决方案。NPM 包包含可重用的代码块,只需一条命令即可轻松集成到项目中。通过使用 NPM 包,开发者可以避免重复造轮子,从而专注于构建项目本身。
每个 NPM 包都由唯一的名称和版本号标识,允许开发人员在其项目中指定和安装特定版本的包。
NPM 包包含各种工具,例如Express或React等框架、 jQuery等库以及Gulp和Webpack等任务运行器。
本指南将教你如何创建和发布 NPM 包。让我们开始吧。
先决条件
要按照本文详述的步骤进行操作,您必须具备以下条件:
- 对Node.js有基本的了解
- 已安装Node.js
- NPM注册表帐户
- 代码编辑器,最好是Visual Studio Code。
什么是NPM?
NPM 代表 Node Package Manager(节点包管理器)。它是 Node.js 的默认包管理器。NPM 提供两个主要功能:
- NPM CLI:NPM CLI,也称为“npm”,是一个命令行实用程序,使开发人员能够安装、管理和发布软件包。
- NPM Registry:是一个开发者可以发布公共和私有软件包的仓库,使其他人可以访问它们。
软件包本质上就是 JavaScript 项目。
NPM 是最大的 JavaScript 包管理器。截至本文撰写之时,NPM 官方注册表中已有超过260 万个软件包,涵盖从小型实用工具包到大型框架的各种类型。这些软件包的下载量已超过2160 亿次。
这一成功可归功于Node.js活跃且蓬勃发展的生态系统。
package.json在 Node.js 中,每个项目在其根目录下都有一个名为 `.node_modules` 的元数据文件,该文件由 NPM 创建和维护。此文件包含项目的关键信息,包括项目名称、版本、描述、作者、许可证、依赖项和脚本。该package.json文件作为 Node.js 项目的中央配置文件,在管理依赖项方面至关重要。
依赖项是指安装在 Node.js 项目中的软件包。
此外,NPM 还提供了一些基本命令来执行诸如初始化项目、安装包和发布包等任务。最常用的命令包括npm init:npm publishnpm install
NPM 在 Node.js 生态系统中至关重要,因为它促进了协作、解决方案共享、加快了开发速度并提高了软件质量。它已成为 Node.js 开发人员的必备工具,并广泛应用于开源和企业项目中。
如何创建 NPM 包
在开始创建 NPM 包的步骤之前,建议您先确定 NPM 包的名称。请务必访问NPM 注册表,确认您想要的名称是否可用。
如果您想要的名称已被占用,请考虑选择其他名称。尝试使用已被占用的名称(或类似名称)会导致 Node.js 抛出错误。
例如:如果rgbcolorpicker已存在名为 `<package_name>` 的软件包,您将无法发布名为 `<package_name>` 的软件包rgb-color-picker。请确保为您的软件包选择一个唯一且可用的名称。
不过,如果您仍然希望使用已被占用的名称,您可以将该软件包发布为作用域软件包。稍后将提供更多相关信息。
现在你已经有了软件包名称,我们继续:
创建账户
- 首先,在NPM 注册表网站上创建一个帐户。如果您已有帐户,请登录。
请妥善保管您的凭证,因为发布您的软件包时需要用到它们。
项目结构
- 创建本项目所需的以下文件和文件夹:
My-First-Package
└─ main.js
以下是图示:
项目初始化
- 打开终端,导航到工作目录的根目录,然后运行以下命令初始化项目:
npm init
- npm 会提示您提供某些信息以生成
package.json文件。
文件在 NPM 包中的重要性
package.json不容低估。
-
为了帮助您创建
package.json文件,以下是如何输入必要信息的指南:- 软件包名称:请在此处输入您选择的软件包名称。请确保名称为小写,并删除末尾的空格。
- 版本:建议保留初始值,并在进行更改时更新软件包版本。
- 描述:请描述您的包裹。
- 入口点:这是您的软件包的入口点。除非您计划使用不同的文件作为入口点,否则请保留初始值。
- 测试命令:如果您有任何用于软件包的测试命令,请在此处输入。如果没有,请将此字段留空。
- git 仓库:输入此软件包所在的 Git 仓库链接。
- 关键词:提供“库”、“框架”或“任务运行器”等相关关键词,以帮助其他人轻松找到您的软件包。
- 作者:请输入您的姓名或别名。
- 许可证:如果您有许可证,请在此处填写。如果没有,请将此字段留空。
下面这张图示说明了如何正确输入您的信息:
编写你的代码
- 打开
main.js文件并插入提供的代码片段:
function generatePassword(length, includeUppercase, includeNumbers, includeSpecialChars) {
if (!length || typeof length === "string"){
return new Error ("Please provide password length")
}
const lowercaseChars = 'abcdefghijklmnopqrstuvwxyz';
const uppercaseChars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
const numberChars = '0123456789';
const specialChars = '!@#$%^&*()_-+=<>?/{}[]';
let validChars = lowercaseChars;
let password = '';
if (includeUppercase) validChars += uppercaseChars;
if (includeNumbers) validChars += numberChars;
if (includeSpecialChars) validChars += specialChars;
for (let i = 0; i < length; i++) {
const randomIndex = Math.floor(Math.random() * validChars.length);
password += validChars[randomIndex];
}
return password;
}
module.exports = generatePassword
-
上面的代码片段中:
- 该
generatePassword函数用于创建密码,运行需要四个参数。第一个参数是密码的长度。其余参数为可选参数,用于确定密码是否应包含大写字母、数字或特殊字符。 - 然后将该函数导出,以便其他人可以访问它。
- 该
测试您的软件包
下一步是测试密码生成器软件包,以确保其按预期工作。
- 打开终端并输入以下命令:
npm link
npm link 命令允许你在软件包和全局 npm 注册表之间创建符号链接,使你机器上的其他项目无需安装即可访问该软件包。这在开发过程中尤其有用,因为它允许你快速测试更改,而无需每次修改后都发布和更新软件包。
- 创建一个新的文件夹和文件,以便引入密码生成器包。
Test-Folder
└─ test.js
- 请确保在终端中导航到
Test-Folder工作目录,然后按顺序运行命令。
npm init -y
npm link <packagename>
要初始化目录或文件夹,可以使用该
npm init命令。添加-y标志后,可以跳过提示,节省时间。该命令test-folder专门用于测试,因此无需花费时间提供任何必要信息。该
npm link <packagename>命令会将指定的包添加到您的项目中。
该npm link <packagename>命令创建了一个node_modules文件夹。此文件夹存放着 npm 安装的软件包。要查找您的软件包,请导航到该文件夹内的相应位置。node_modules
- 打开
test.js文件并引入该软件包。
const passwordGen = require('backendbro-password-generator')
const password = passwordGen(10, true, false, true)
console.log(password)
- 要完成测试过程,请执行以下命令
node test.js
瞧!软件包运行正常。接下来,我们将其发布到 NPM 注册表。
发布到 NPM 注册表
测试完你的 NPM 包后,就可以将其发布到 NPM 仓库了。以下是一个简单的指南:
登录到 NPM 注册表:
- 首先,您需要创建一个账户。如果您已有账户,请登录。
发布:
- 打开终端,导航到软件包目录,然后运行以下命令:
npm login
- 您将被重定向到 NPM 注册表。请输入发送到您邮箱的一次性密码 (OTP) 以完成身份验证过程。
- 要发布您的软件包,请输入以下命令:
npm publish
太棒了!您的软件包已成功发布到 NPM 注册表。现在您可以在注册表中搜索到它了。
发布范围软件包
在前面的章节中,我们讨论了如何将软件包发布为作用域软件包,以避免使用已被占用的软件包名称。作用域软件包允许您为软件包创建命名空间,从而避免命名冲突。
默认情况下,范围包是私有的。但是,您可以选择授予特定人员访问权限,允许他们使用您的包。私有包需要付费订阅计划,但您无需担心这一点。您可以将范围包发布为公开包,从而避免任何费用。
如果您决定在发布后将作用域包设为公开,您可以通过将 package.json 文件中的 access 字段从restricted更新为public来轻松更改其可见性。
创建和发布范围包是一个简单的过程。要执行此操作,请按照以下步骤操作:
项目结构
创建一个新项目
Scoped-package
└─ main.js
项目初始化
- 首先,您需要运行以下命令来初始化目录:
npm init --scope=@username
- 在 npm 提示符中输入包名时,请遵循以下格式:@用户名/包名。请参见下面的示例图片。
编写代码:
- 复制
generatePassword上一节中的函数并将其粘贴到main.js文件中。
测试软件包:
- 按照上一节中描述的步骤来测试你的软件包。
出版:
- 要发布您的作用域包,请打开终端并运行以下命令:
npm publish --access public
请注意:默认情况下,作用域包是私有的。另一种使包公开的方法是将标志设置
access为 public。
恭喜!您已成功发布您的第一个作用域包。请访问 NPM 注册表查看它。
安装 NPM 包
将软件包发布到 NPM 注册表后,最佳实践是安装并使用它,以确保它能像常规软件包一样正常工作。
项目结构
创建一个新项目并使用 . 初始化它npm init。
Package
└─ main.js
安装
使用以下命令安装新发布的软件包。
npm install packagname
你可以在 npm 命令中使用`npm
iinstall` 代替 `npm install`install。例如,npm install你可以输入 `npm install` 而不是 `npm install`。npm i
用法
打开main.js文件并加载新安装的软件包。
const passwordGen = require("backendbro-password-generator")
const password = passwordGen(10, true, true, true)
console.log(password)
运行你的应用
只需运行您的应用程序:
node main.js
结论
对于Node.js开发者来说,掌握如何创建NPM包是一项至关重要的技能。它使他们能够为开源社区做出贡献,并通过避免重复造轮子来简化工作流程。
在本指南中,您了解了 NPM 和 NPM 包的概念及其对软件开发的重要性。您还学习了如何在 NPM 注册表中创建和发布包。
你也可以通过分享你的软件包,成为不断发展的 Node.js 生态系统的一份子。加入我们,分享你的解决方案,让我们携手共创软件开发的未来,一次一个软件包。
感谢你的陪伴,祝你编程愉快!😊
















