发布于 2026-01-06 1 阅读
0

分步指南:如何创建和发布 NPM 包。

分步指南:如何创建和发布 NPM 包。

NPM(Node 包管理器)包是 Node.js 的重要组成部分。它们允许开发者与更广泛的 Node.js 社区共享解决方案。NPM 包包含可重用的代码块,只需一条命令即可轻松集成到项目中。通过使用 NPM 包,开发者可以避免重复造轮子,从而专注于构建项目本身。

每个 NPM 包都由唯一的名称和版本号标识,允许开发人员在其项目中指定和安装特定版本的包。

NPM 包

NPM 包包含各种工具,例如ExpressReact等框架、 jQuery等库以及GulpWebpack等任务运行器。

本指南将教你如何创建和发布 NPM 包。让我们开始吧。

先决条件

要按照本文详述的步骤进行操作,您必须具备以下条件:

  1. 对Node.js有基本的了解
  2. 已安装Node.js
  3. NPM注册表帐户
  4. 代码编辑器,最好是Visual Studio Code。

什么是NPM?

NPM 代表 Node Package Manager(节点包管理器)。它是 Node.js 的默认包管理器。NPM 提供两个主要功能:

  1. NPM CLI:NPM CLI,也称为“npm”,是一个命令行实用程序,使开发人员能够安装、管理和发布软件包。
  2. NPM Registry:是一个开发者可以发布公共和私有软件包的仓库,使其他人可以访问它们。

软件包本质上就是 JavaScript 项目。

NPM 是最大的 JavaScript 包管理器。截至本文撰写之时,NPM 官方注册表中已有超过260 万个软件包,涵盖从小型实用工具包到大型框架的各种类型。这些软件包的下载量已超过2160 亿次。

npm 包数量的统计信息

这一成功可归功于Node.js活跃且蓬勃发展的生态系统。

package.json在 Node.js 中,每个项目在其根目录下都有一个名为 `.node_modules` 的元数据文件,该文件由 NPM 创建和维护。此文件包含项目的关键信息,包括项目名称、版本、描述、作者、许可证、依赖项和脚本。该package.json文件作为 Node.js 项目的中央配置文件,在管理依赖项方面至关重要。

依赖项是指安装在 Node.js 项目中的软件包。

此外,NPM 还提供了一些基本命令来执行诸如初始化项目、安装包和发布包等任务。最常用的命令包括npm initnpm publishnpm install

NPM 在 Node.js 生态系统中至关重要,因为它促进了协作、解决方案共享、加快了开发速度并提高了软件质量。它已成为 Node.js 开发人员的必备工具,并广泛应用于开源和企业项目中。

如何创建 NPM 包

在开始创建 NPM 包的步骤之前,建议您先确定 NPM 包的名称。请务必访问NPM 注册表,确认您想要的名称是否可用。

如果您想要的名称已被占用,请考虑选择其他名称。尝试使用已被占用的名称(或类似名称)会导致 Node.js 抛出错误。

例如:如果rgbcolorpicker已存在名为 `<package_name>` 的软件包,您将无法发布名为 `<package_name>` 的软件包rgb-color-picker。请确保为您的软件包选择一个唯一且可用的名称。

不过,如果您仍然希望使用已被占用的名称,您可以将该软件包发布为作用域软件包。稍后将提供更多相关信息。

现在你已经有了软件包名称,我们继续:

创建账户

请妥善保管您的凭证,因为发布您的软件包时需要用到它们。

项目结构

  • 创建本项目所需的以下文件和文件夹:
My-First-Package  
└─ main.js        
Enter fullscreen mode Exit fullscreen mode

以下是图示

项目结构

项目初始化

  • 打开终端,导航到工作目录的根目录,然后运行以下命令初始化项目:
npm init
Enter fullscreen mode Exit fullscreen mode
  • npm 会提示您提供某些信息以生成package.json文件。

文件在 NPM 包中的重要性package.json不容低估。

  • 为了帮助您创建package.json文件,以下是如何输入必要信息的指南:

    • 软件包名称:请在此处输入您选择的软件包名称。请确保名称为小写,并删除末尾的空格。
    • 版本:建议保留初始值,并在进行更改时更新软件包版本。
    • 描述:请描述您的包裹。
    • 入口点:这是您的软件包的入口点。除非您计划使用不同的文件作为入口点,否则请保留初始值。
    • 测试命令:如果您有任何用于软件包的测试命令,请在此处输入。如果没有,请将此字段留空。
    • git 仓库:输入此软件包所在的 Git 仓库链接。
    • 关键词:提供“库”、“框架”或“任务运行器”等相关关键词,以帮助其他人轻松找到您的软件包。
    • 作者:请输入您的姓名或别名。
    • 许可证:如果您有许可证,请在此处填写。如果没有,请将此字段留空。

下面这张图示说明了如何正确输入您的信息:

Package.json

编写你的代码

  • 打开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
Enter fullscreen mode Exit fullscreen mode
  • 上面的代码片段中:

    • generatePassword函数用于创建密码,运行需要四个参数。第一个参数是密码的长度。其余参数为可选参数,用于确定密码是否应包含大写字母、数字或特殊字符。
    • 然后将该函数导出,以便其他人可以访问它。

测试您的软件包

下一步是测试密码生成器软件包,以确保其按预期工作。

  • 打开终端并输入以下命令:
npm link 
Enter fullscreen mode Exit fullscreen mode

npm link 命令允许你在软件包和全局 npm 注册表之间创建符号链接,使你机器上的其他项目无需安装即可访问该软件包。这在开发过程中尤其有用,因为它允许你快速测试更改,而无需每次修改后都发布和更新软件包。

npm init

  • 创建一个新的文件夹和文件,以便引入密码生成器包。
Test-Folder
└─ test.js   
Enter fullscreen mode Exit fullscreen mode
  • 请确保在终端中导航到Test-Folder工作目录,然后按顺序运行命令。
npm init -y 
npm link <packagename>
Enter fullscreen mode Exit fullscreen mode

要初始化目录或文件夹,可以使用该npm init命令。添加-y标志后,可以跳过提示,节省时间。该命令test-folder专门用于测试,因此无需花费时间提供任何必要信息。

npm link <packagename>命令会将指定的包添加到您的项目中。

npm 链接包

npm link <packagename>命令创建了一个node_modules文件夹。此文件夹存放着 npm 安装的软件包。要查找您的软件包,请导航到该文件夹​​内的相应位置。node_modules

Node 模块

  • 打开test.js文件并引入该软件包。
const passwordGen = require('backendbro-password-generator') 

const password = passwordGen(10, true, false, true) 
console.log(password)
Enter fullscreen mode Exit fullscreen mode
  • 要完成测试过程,请执行以下命令
node test.js
Enter fullscreen mode Exit fullscreen mode

npm 测试

瞧!软件包运行正常。接下来,我们将其发布到 NPM 注册表。

发布到 NPM 注册表

测试完你的 NPM 包后,就可以将其发布到 NPM 仓库了。以下是一个简单的指南:

登录到 NPM 注册表:

  • 首先,您需要创建一个账户。如果您已有账户,请登录。

发布:

  • 打开终端,导航到软件包目录,然后运行以下命令:
  npm login
Enter fullscreen mode Exit fullscreen mode

npm 登录

  • 您将被重定向到 NPM 注册表。请输入发送到您邮箱的一次性密码 (OTP) 以完成身份验证过程。

一次性密码

  • 要发布您的软件包,请输入以下命令:
npm publish 
Enter fullscreen mode Exit fullscreen mode

npm 发布

太棒了!您的软件包已成功发布到 NPM 注册表。现在您可以在注册表中搜索到它了。

注册表

发布范围软件包

在前面的章节中,我们讨论了如何将软件包发布为作用域软件包,以避免使用已被占用的软件包名称。作用域软件包允许您为软件包创建命名空间,从而避免命名冲突。

默认情况下,范围包是私有的。但是,您可以选择授予特定人员访问权限,允许他们使用您的包。私有包需要付费订阅计划,但您无需担心这一点。您可以将范围包发布为公开包,从而避免任何费用。

如果您决定在发布后将作用域包设为公开,您可以通过将 package.json 文件中的 access 字段从restricted更新为public来轻松更改其可见性。

创建和发布范围包是一个简单的过程。要执行此操作,请按照以下步骤操作:

项目结构

创建一个新项目

Scoped-package  
└─ main.js      
Enter fullscreen mode Exit fullscreen mode

项目初始化

  • 首先,您需要运行以下命令来初始化目录:
  npm init --scope=@username
Enter fullscreen mode Exit fullscreen mode
  • 在 npm 提示符中输入包名时,请遵循以下格式:@用户名/包名。请参见下面的示例图片。

初始化范围包

编写代码:

  • 复制generatePassword上一节中的函数并将其粘贴到main.js文件中。

测试软件包:

  • 按照上一节中描述的步骤来测试你的软件包。

出版:

  • 要发布您的作用域包,请打开终端并运行以下命令:
    npm publish --access public
Enter fullscreen mode Exit fullscreen mode

请注意:默认情况下,作用域包是私有的。另一种使包公开的方法是将标志设置access为 public。

npm 发布范围包

恭喜!您已成功发布您的第一个作用域包。请访问 NPM 注册表查看它。

作用域包

安装 NPM 包

将软件包发布到 NPM 注册表后,最佳实践是安装并使用它,以确保它能像常规软件包一样正常工作。

项目结构

创建一个新项目并使用 . 初始化它npm init

Package     
└─ main.js  
Enter fullscreen mode Exit fullscreen mode

安装

使用以下命令安装新发布的软件包。

npm install packagname 
Enter fullscreen mode Exit fullscreen mode

你可以在 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) 
Enter fullscreen mode Exit fullscreen mode

运行你的应用

只需运行您的应用程序:

node main.js 
Enter fullscreen mode Exit fullscreen mode

节点运行

结论

对于Node.js开发者来说,掌握如何创建NPM包是一项至关重要的技能。它使他们能够为开源社区做出贡献,并通过避免重复造轮子来简化工作流程。

在本指南中,您了解了 NPM 和 NPM 包的概念及其对软件开发的重要性。您还学习了如何在 NPM 注册表中创建和发布包。

你也可以通过分享你的软件包,成为不断发展的 Node.js 生态系统的一份子。加入我们,分享你的解决方案,让我们携手共创软件开发的未来,一次一个软件包。

感谢你的陪伴,祝你编程愉快!😊

实用资源

文章来源:https://dev.to/backendbro/a-step-by-step-guide-how-to-create-and-publish-an-npm-package-2off