Node.js开发属于自己的npm包(发布到npm官网)

ops/2025/2/11 10:37:09/

在 Node.js 中开发并发布自己的 npm 包是一个非常好的练习,可以帮助我们更好地理解模块化编程和包管理工具,本篇文章主要阐述如何使用nodejs开发一个属于自己的npm包,并且将其发布在npm官网。在开始之前确保已经安装了 Node.js 和 npm。可以在cmd命令行中运行 node -v 和 npm -v 来检查它们的版本,我这里使用的是nvm。

目录

一、初始化包的基本结构

二、开发包的基本流程

1.包的功能

2.开发包流程 

2.1 创建根目录

2.2 创建其他文件

 2.3 初始化package.json

2.4 开发功能

2.5 整合包的入口文件

2.6 编写包的说明文档

三、发布包

1.注册账号

2.登录账号

3.发布包

4.查看包

四、删除包


一、初始化包的基本结构

一个规范的包,他必须包含以下基本结构:

(1)独立的目录结构:包必须以一个独立的目录形式存在,这是包的基本组织单元。该目录应包含包的所有相关文件和子目录,以便于管理和分发。

(2)package.json 配置文件:在包的顶级目录中,必须存在一个名为 package.json 的文件。该文件是 Node.js 包的核心配置文件,用于定义包的元数据、依赖关系及其他重要信息。

package.json配置:

名称功能
namenpm服务器上面的包名(这个名字和文件夹的名字可以不一致)
version包的版本号 
descriptionnpm官网上面查找的时候,搜素框下面提示框所显示的简介

main

包的入口
keywords包的查找关键词
license所遵守的开源许可协议

(3)index.js文件:这是包的入口文件。

(4)README.md:包的说明文档--官网上面也会以网页的形式展现出来的。

二、开发包的基本流程

1.包的功能

  • 格式化日期:将日期转为特定字符串格式,如ISO 8601或自定义。
  • 转义 HTML 特殊字符:转换<、>等字符为HTML实体,防解析错误。
  • 还原 HTML 特殊字符:将HTML实体转换回原字符,恢复文本原貌。

2.开发包流程 

2.1 创建根目录

新建timeEscape-tools文件夹,作为包的根目录。

2.2 创建其他文件

在新建的文件夹下,创建以下文件夹和文件,包含src文件夹、package.json文件、index.js文件及README.md。

 2.3 初始化package.json

在package.json文件中书写以下代码,注意:下方的代码中除了名称不变,其余的可根据需要进行修改。

{"name":"timeescape-tools","version":"1.0.0","description":"提供了格式化时间,HTMLEscape相关的功能","main":"index.js","keywords": ["date", "format", "html", "escape"],"license":"ISC"
}

2.4 开发功能

对于包的功能我们将其文件建立在src文件夹下,如下在src文件夹中创建dateFormat和htmlEscape文件。

(1)dateFormat.js中定义格式化时间的方法 

//定义格式化时间的函数
function dateFormat(date) { const dt = new Date(date);//年const year = zeroPad(dt.getFullYear());const month = zeroPad(dt.getMonth() + 1);//日const day = zeroPad(dt.getDate());//时const hour = zeroPad(dt.getHours());//分const minute = zeroPad(dt.getMinutes());//秒const second = zeroPad(dt.getSeconds());    //返回格式化后的时间字符串return `${year}-${month}-${day} ${hour}:${minute}:${second}`;
}
//定义一个补零的函数
function zeroPad(num) {return num>9?num:'0'+num;
}
module.exports = {dateFormat
}

(2)htmlEscape.js中定义转义和还原HTML的方法

//定义转义HTML字符的函数
function escapeHtml(str) {return str.replace(/<|>|"|&/g, (match) => { switch (match) {case '<':return '&lt;';case '>':return '&gt;';case '"':return '&quot;';case '&':return '&amp;';default:return match;}})
}
//定义还原HTML字符的函数
function unescapeHtml(str) {return str.replace(/&lt;|&gt;|&quot;|&amp;/g, (match) => { switch (match) {case '&lt;':return '<';case '&gt;':return '>';case '&quot;':return '"';case '&amp;':return '&';default:return match;}})
}
module.exports = {escapeHtml,unescapeHtml
}

2.5 整合包的入口文件

在index.js文件中引入上述开发功能的文件,并且将其向外暴露出去。

const date = require('./src/dateFormat')
const escape=require('./src/htmlEscape')
//向外暴露
module.exports = {...date,...escape
}

2.6 编写包的说明文档

以上步骤操作完之后,就可以来书写介绍文档了

<!--* @Description: timeEscape-tools使用文档介绍
-->
##安装
```
npm install timeEscape-tools
```
##导入
```js
const timeEscape = require('timeEscape-tools');
```
##使用--格式化时间
```js// 调用dateFormat对时间进行格式化
const timeStr = timeEscape.dateFormat(new Date());
console.log(timeStr); // 2021-01-28 11:18:31
```##使用--转义HTML中的特殊字符
```js
// 调用escapeHTML对HTML中的特殊字符进行转义
const htmlStr = '<div>Hello, world!</div>';
const escapedHtmlStr = timeEscape.escapeHtml(htmlStr);
console.log(escapedHtmlStr); // &lt;div&gt;Hello, world!&lt;/div&gt;
```
##使用--解码HTML中的特殊字符
```js
// 调用unescapeHTML对HTML中的特殊字符进行解码
const escapedHtmlStr = '&lt;div&gt;Hello, world!&lt;/div&gt;';
const htmlStr = timeEscape.unescapeHtml(escapedHtmlStr);
console.log(htmlStr); // <div>Hello, world!</div>
``` 
##开源协议
ISC

三、发布包

1.注册账号

访问https://www.npmjs.com/网站,点击“sign up”按钮进入注册页面,按照提示填写相关信息以注册个人npm账号。

2.登录账号

在以上注册账号的步骤操作完成后,可以在终端中执行 npm login 命令进行登录。这里需要注意一点在执行 npm login 命令之前,必须先把下包的服务器地址切换为 npm 的官方服务器。否则会导致登录失败!
由于我在执行此命令前未更换,导致出现以下错误:Public registration is not allowed

解决方式:在终端中执行以下命令,将自己的npm镜像源改为npm的https://registry.npmjs.org/这个,注意:(发布完后 切换:npm config set registry https://registry.npmmirror.com,避免npm install报错)

npm config set registry https://registry.npmjs.org

3.发布包

在终端中切换到包的根目录,运行npm publish发布npm包。注意,包名需唯一,避免与现有包重复。如有不确定,可先在https://www.npmjs.com/搜索确认包名是否重复。

4.查看包

 在npm官网上查看包是否发布成功,登录自己的npm账号,然后点击头像,选择packages即可查看。

四、删除包

 如若想要删除自己所发布的包,需在终端运行包名 --force命令,即可从npm删除已发布的包。

npm unpublish timeEscape-tools --force

 注意:

  • npm unpublish 命令只能测除 72 小时以内发布的包,
  • npm unpublish 别酸的包,在 24 小时内不允许重复发布


http://www.ppmy.cn/ops/157503.html

相关文章

运维_Mac环境单体服务Docker部署实战手册

Docker部署 本小节&#xff0c;讲解如何将前端 后端项目&#xff0c;使用 Docker 容器&#xff0c;部署到 dev 开发环境下的一台 Mac 电脑上。 1 环境准备 需要安装如下环境&#xff1a; Docker&#xff1a;容器MySQL&#xff1a;数据库Redis&#xff1a;缓存Nginx&#x…

Blazor-<select>

今天我们来说说<select>标签的用法&#xff0c;我们还是从一个示例代码开始 page "/demoPage" rendermode InteractiveAuto inject ILogger<InjectPage> logger; <h3>demoPage</h3> <select multiple>foreach (var item in list){<…

npm常用命令以及nvm切换node版本

npm常用命令以及nvm切换node版本 npm常用命令nvm切换node版本 npm常用命令 查看npm当前设置的源 npm config get registry# 或者 查看当前所有源列表 npm config list设置为淘宝镜像 npm config set registry https://registry.npmmirror.com设置回原本的源&#xff0c;用…

Java使用aspose实现pdf转word

Java使用aspose实现pdf转word 一、下载aspose-pdf-21.6.jar包【下载地址】&#xff0c;存放目录结构如图&#xff1b;配置pom.xml。 <!--pdf to word--> <dependency><groupId>com.aspose</groupId><artifactId>aspose-pdf</artifactId>…

WiFi配网流程—SmartConfig 配网流程

目录 &#x1f4cc; SmartConfig 配网流程 &#x1f449; 阶段 1&#xff1a;设备进入配网模式 &#x1f449; 阶段 2&#xff1a;手机 App 发送 Wi-Fi 配置信息 &#x1f449; 阶段 3&#xff1a;设备解析 Wi-Fi 配置&#xff0c;连接家庭网络 &#x1f449; 阶段 4&…

全面理解-友元(friend关键字)

在 C 中&#xff0c;friend 关键字用于授予其他类或函数访问当前类的 私有&#xff08;private&#xff09;和保护&#xff08;protected&#xff09;成员 的权限。这种机制打破了严格的封装性&#xff0c;但可以在特定场景下提高代码的灵活性和效率。以下是 friend 的详细说明…

51单片机之引脚图(详解)

8051单片机引脚分类与功能笔记 1. 电源引脚 VCC&#xff08;第40脚&#xff09;&#xff1a;接入5V电源&#xff0c;为单片机提供工作电压。GND&#xff08;第20脚&#xff09;&#xff1a;接地端&#xff0c;确保电路的电位参考点。 2.时钟引脚 XTAL1&#xff08;第19脚&a…

IDEA中列举的是否是SpringBoot的依赖项的全部?在哪里能查到所有依赖项,如何开发自己的依赖项让别人使用

在 IntelliJ IDEA 中列举的依赖项并不一定是 Spring Boot 项目的全部依赖项。IDEA 通常只显示你在 pom.xml&#xff08;Maven&#xff09;或 build.gradle&#xff08;Gradle&#xff09;中显式声明的依赖项&#xff0c;而这些依赖项本身可能还会引入其他传递性依赖。 1. 如何…