Node.js 如何发布一个 NPM 包——详细教程

news/2025/3/28 7:15:42/

在本文中,我将带大家一步步学习如何创建并发布一个 NPM 包,帮助开发者理解整个流程,并能顺利将自己的 JavaScript 库发布到 NPM 上供他人使用。


1. 安装 Node.js 和 npm

在开始之前,请确保你的电脑上已经安装了 Node.jsnpm(Node.js 自带 npm)。你可以在终端(Windows 用户请使用 cmdPowerShell)输入以下命令检查是否已安装:

node -v
npm -v

如果出现版本号,说明已安装。如果没有,请前往 Node.js 官网 下载并安装。


2. 创建一个新的项目文件夹

在合适的目录下运行以下命令,创建项目文件夹并进入:

mkdir my-npm-package
cd my-npm-package

3. 初始化 package.json

运行以下命令初始化 package.json 文件:

npm init

然后根据提示输入包的名称、版本号、描述、入口文件等信息。或者你可以使用 npm init -y 来直接生成一个默认的 package.json 文件。

示例 package.json(文件名:package.json):

{"name": "my-npm-package","version": "1.0.0","description": "一个简单的 NPM 包示例","main": "index.js","scripts": {"test": "echo \"Error: no test specified\" && exit 1"},"keywords": ["npm", "package", "example"],"author": "你的名字","license": "MIT"
}

4. 编写核心代码

在项目根目录创建 index.js 文件,并编写代码。例如,我们创建一个简单的函数,用于返回 Hello, NPM!

文件名:index.js

function sayHello() {return "Hello, NPM!";
}module.exports = sayHello;

5. 创建 README 文件

在根目录创建 README.md,用于向用户介绍你的 NPM 包。

文件名:README.md

# my-npm-package这是一个简单的 NPM 包示例,它提供一个 `sayHello` 方法,返回 `Hello, NPM!`。## 安装```sh
npm install my-npm-package

使用示例

const sayHello = require('my-npm-package');console.log(sayHello()); // 输出: Hello, NPM!

---## 6. 登录 NPM 账户如果你还没有 NPM 账户,可以前往 [NPM 官网](https://www.npmjs.com/) 注册一个。然后在终端登录:```sh
npm login

输入你的 用户名、密码和邮箱 进行登录。


7. 发布 NPM 包

发布前,确保 package.json 中的 name 没有和已有的包重复(可在 NPM 搜索 页面查找)。

如果包名重复,可以在 package.json 修改 name,或者使用 NPM 作用域(Scoped Packages),格式如 @yourusername/package-name

然后,在终端运行以下命令发布包:

npm publish

如果是 Scoped Package,需要加上 --access public

npm publish --access public

发布成功后,你的包就可以在 npmjs.com 上搜索并安装了!


8. 测试安装并使用

在另一个项目或测试目录运行:

npm install my-npm-package

然后创建 test.js 文件并运行:

文件名:test.js

const sayHello = require('my-npm-package');console.log(sayHello()); // 输出: Hello, NPM!

运行:

node test.js

你应该会看到 Hello, NPM! 的输出!


9. 更新 NPM 包

如果你需要更新 NPM 包,比如修复了 bug 或增加了新功能,需要更新 package.json 中的版本号(如 1.0.0 -> 1.0.1),然后重新发布:

npm version patch
npm publish

如果是新增功能:

npm version minor
npm publish

如果是重大更新:

npm version major
npm publish

10. 删除已发布的包(慎用!)

如果你发布了错误的包,可以在 72 小时内 使用以下命令删除:

npm unpublish my-npm-package --force

NPM 不允许删除已发布超过 72 小时的包,所以请谨慎发布。


总结

通过本文,你学会了:

  1. 如何创建并初始化一个 NPM 包
  2. 如何编写 index.js 代码并导出功能
  3. 如何创建 README.md 介绍包的用途
  4. 如何登录并发布 NPM 包
  5. 如何安装并使用自己发布的包
  6. 如何更新和删除 NPM 包

希望这篇文章对你有所帮助!如果有问题,欢迎留言讨论 😊

 


http://www.ppmy.cn/news/1582963.html

相关文章

Filnk并行度和算子链

1. 并行度(Parallelism) 1.1 什么是并行度? 基本概念: 在 Flink 中,每个操作(算子)都可以被拆分成多个“子任务”(subtasks),这些子任务可以同时在不同的线…

QML指示控件:ScrollBar与ScrollIndicator

目录 概述 ScrollBar ScrollIndicator ScrollBar的基本用法 基本属性 示例1:与Flickable结合使用 ScrollIndicator的基本用法 基本属性 示例2:与Flickable结合使用 ScrollBar与ScrollIndicator区别 功能差异 性能差异 适用场景 示例3&…

Redis设计与实现-底层实现

Redis底层实现 1、事件1.1 文件事件1.2 时间事件1.3 事件调度 2、Redis客户端2.1 客户端的相关属性2.2 客户端的创建与关闭2.2.1 普通客户端的创建2.2.2 普通客户端的关闭2.2.3 AOF的伪客户端2.2.4 Lua脚本的伪客户端 3、Redis服务端3.1 命令请求的执行过程3.1.1 客户端发送命令…

告别流媒体会员!如何用Docker搭建可远程控制的家庭音乐服务器

文章目录 前言1. 添加镜像源2. 本地部署Melody3. 本地访问与使用演示4. 安装内网穿透5. 配置Melody公网地址6. 配置固定公网地址 前言 嗨,各位音乐发烧友们!今天我要带你们解锁一个超酷的新技能——在香橙派Zero3上搭建自己的在线音乐平台,并…

langgraph简单Demo3(画一个简单的图)

文章目录 画图简单解析再贴结果图 画图 from langgraph.graph import StateGraph, END from typing import TypedDict# 定义状态结构 # (刚入门可能不理解这是什么,可以理解为一个自定义的变量库,你的所有的入参出参都可以定义在这里) # 如下&#xff1…

免费提供多样风格手机壁纸及自动更换功能的软件

在寻找手机壁纸时,要是能有一款软件,既免费又资源丰富,操作还简单方便,那可就太棒了。今天就给大家介绍这样一款软件——壁纸喵,它能满足你对手机壁纸的各种需求。 壁纸喵是一款完全免费的手机壁纸软件,其…

朴素贝叶斯:文本处理中的分类利器

在大数据与人工智能时代,文本处理任务无处不在,如垃圾邮件分类、用户情感预测等。朴素贝叶斯算法凭借简洁的原理和高效的计算,成为文本处理领域的经典方法。它如何在这些场景中发挥作用?让我们深入探索。 垃圾邮件分类 假设我们…

【性能优化点滴】odygrd/quill 中的冷热属性宏

以下是对这段代码的详细解析: 代码功能概述 这段代码定义了三个 GCC/Clang 特有的编译器属性宏,用于指导编译器进行优化: QUILL_ATTRIBUTE_HOT:标记高频执行的 “热” 函数QUILL_ATTRIBUTE_COLD:标记低频执行的 “冷…