nodejs插件开发与发布

简介: 本文主要介绍如何快速创建nodejs插件并发布到npm上。npm是一个让JavaScript程序员分享和复用代码的工具,我们不仅可以install别人的插件,也可以publish自己的代码。

本文主要介绍如何快速创建nodejs插件并发布到npm上。npm是一个让JavaScript程序员分享和复用代码的工具,我们不仅可以install别人的插件,也可以publish自己的代码。

npm是什么?

npm 为你和你的团队打开了连接整个 JavaScript 天才世界的一扇大门。它是世界上最大的软件注册表,每星期大约有 30 亿次的下载量,包含超过 600000 个 包(package) (即,代码模块)。来自各大洲的开源软件开发者使用 npm 互相分享和借鉴。包的结构使您能够轻松跟踪依赖项和版本。

类似于Java中的MavenUbuntu中的apt-get, Ruby中的Gem, Pythonpypi等…

npm 由三个独立的部分组成:

  • 网站:是开发者查找包(package)、设置参数以及管理 npm 使用体验的主要途径。
  • 注册表(registry):一个巨大的数据库,保存了每个包(package)的信息。
  • 命令行工具 (CLI):通过命令行或终端运行。开发者通过 CLI 与 npm 打交道。

npm官方网站:www.npmjs.com/

网络异常,图片无法展示
|

npm能做什么?

将独立的模块构建成插件,在后期项目中可以像搭积木一样组装需要的模块,避免重复造轮子

创建一个包

初始化

创建插件目录dev-localstorage,进入目录,使用npm init --yes默认方式初始化nodejs插件,命令窗口命令如下:

mkdir dev-localstorage
cd dev-localstorage
npm init --yes

执行后将在插件目录下生成package.json文件,内容如下:

{
  "name": "dev-localstorage",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/QuintionTang/dev-localStorage.git"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "bugs": {
    "url": "https://github.com/QuintionTang/dev-localStorage/issues"
  },
  "homepage": "https://github.com/QuintionTang/dev-localStorage#readme"
}

相关字段说明,更多属性参见官方文档

  • name:插件的名字
  • version:插件版本号
  • description:插件描述
  • author:作者名
  • main:入口文件路径,require(name)将根据这个路径来引入
  • keywords:关键词,使用数组形式,方便npm官网搜索
  • scripts:命令行,通过npm run执行
  • license:许可证书,一般开源是MIT
  • repository:github仓库项目地址

创建代码

在入口文件index.js创建要实现的代码:

const devLocalStorage = (valKey = "authorization") => {
    const MAIN_KEY = "devpoint.";
    const localKey = `${MAIN_KEY}${valKey}`;
    const save = (data) => {
        console.log(`调用方法save: ${localKey}`);
    };
    const get = () => {
        console.log(`调用方法get: ${localKey}`);
    };
    const clear = () => {
        console.log(`调用方法clear: ${localKey}`);
    };
    return {
        save,
        get,
        clear,
    };
};
module.exports = devLocalStorage();

使用module.exports导出对象,在nodejs环境下,通过以下方式调用:

const devLocalStorage = require("dev-localstorage");
devLocalStorage.save("Devpoint");
devLocalStorage.get();
devLocalStorage.clear();

发布

插件开发完了,要把它发布到npm官网上,才能在其他项目中引用。 首次发布,需要在npm官网上注册账号,下次直接npm login进行登录。

$ npm adduser //注册账号
Username: YOUR_USER_NAME
Password: YOUR_PASSWORD
Email: YOUR_EMAIL@domain.com
$ npm publish . //发布

如果登录报405错误,可以在项目目录下添加文件.npmrc,内容为: registry=https://registry.npmjs.org

现在,在npm官网上输入dev-localstoragewww.npmjs.com/package/dev…)便可以搜到发布的包,通过npm install dev-localsorage将插件安装到自己的项目。

如果发现插件有bug了,修改后想要重新发布,直接执行npm push .会报错,这是由于npm检查到发布的version版本已经存在,所以需要更新你的版本号才能重新发布,此时需要以下命令:

npm version patch

此时package.jsonversion字段由1.0.0提升至1.0.1,再执行npm publish,可以看到npm官网版本的更新。

以上是nodejs插件发布的简单流程,实际上nodejs插件开发还包含很多场景,一个大型的项目还需要考虑单元测试、代码压缩、集成测试等等。

大型nodejs插件目录结构

一个完整的nodejs插件目录结构一般如下:

.
├── bin                         #运行目录
├── lib                         #主代码目录
├── example                     #示例目录
├── test                        #测试目录,提供单元测试
├── .travis.yml                 #集成自动测试配置
├── .npmignore                  #npm发布时忽略的文件
├── CHANGELOG.md               #版本更新说明
├── LICENSE                     #许可证书
├── package.json                #npm配置
├── README.md                   #README


相关文章
|
3月前
|
JavaScript 前端开发 安全
使用 Node.js 插件给指定目录下的所有图片添加上文字水印
使用 Node.js 插件给指定目录下的所有图片添加上文字水印
65 0
|
4月前
|
负载均衡 监控 JavaScript
pm2 工具在 Node.js 开发和部署中的重要作用
pm2 工具在 Node.js 开发和部署中的重要作用
56 0
|
5月前
|
JavaScript 前端开发
nodejs实现解析chm文件列表,无需转换为PDF文件格式,在线预览chm文件以及目录,不依赖任何网页端插件
nodejs实现解析chm文件列表,无需转换为PDF文件格式,在线预览chm文件以及目录,不依赖任何网页端插件
|
11天前
|
JavaScript 前端开发 IDE
【TypeScript技术专栏】TypeScript与Node.js后端开发
【4月更文挑战第30天】TypeScript在Node.js后端开发中日益重要,作为JavaScript超集,它提供静态类型检查和面向对象编程,增强代码可靠性和维护性。集成TypeScript能带来类型安全、更好的IDE体验、易于维护的代码以及增强工具支持。通过安装TypeScript编译器、编写TypeScript文件、配置TSconfig,开发者可以在Node.js项目中利用其高级特性,提高代码质量和开发效率。实践案例显示,TypeScript能确保路由处理器的类型正确,降低错误率。随着社区发展,TypeScript成为提升Node.js开发体验的推荐选择。
|
15天前
|
JavaScript 前端开发 关系型数据库
node+vue3+mysql前后分离开发范式——实现视频文件上传并渲染
node+vue3+mysql前后分离开发范式——实现视频文件上传并渲染
25 1
|
15天前
|
JavaScript 前端开发 API
node+vue3+mysql前后分离开发范式——实现对数据库表的增删改查
node+vue3+mysql前后分离开发范式——实现对数据库表的增删改查
36 1
|
18天前
|
Web App开发 JavaScript 前端开发
js开发:请解释什么是Node.js,以及它的应用场景。
Node.js是基于V8引擎的JavaScript运行时,用于服务器端编程。以其事件驱动、非阻塞I/O模型著称,适用于高并发和实时应用。常见用途包括:构建Web服务器、实时应用(如聊天)、API服务、微服务、工具和命令行应用,以及搭配Electron开发桌面软件。
20 1
|
2月前
|
Web App开发 JavaScript 前端开发
js开发:请解释什么是Node.js,以及它的应用场景。
Node.js是基于V8的JavaScript运行时,用于服务器端编程。它的事件驱动、非阻塞I/O模型使其在高并发实时应用中表现出色,如Web服务器、实时聊天、API服务、微服务、工具和跨平台桌面应用(使用Electron)。适用于高性能和实时需求场景。
20 4
|
2月前
|
Web App开发 JavaScript 前端开发
深入浅出:Node.js 在后端开发中的应用与实践
【2月更文挑战第13天】本文旨在探讨Node.js这一流行的后端技术如何在现代Web开发中被应用以及它背后的核心优势。通过深入分析Node.js的非阻塞I/O模型、事件驱动机制和单线程特性,我们将揭示其在处理高并发场景下的高效性能。同时,结合实际开发案例,本文将展示如何利用Node.js构建高性能、可扩展的后端服务,以及在实际项目中遇到的挑战和解决方案。此外,我们还将讨论Node.js生态系统中的重要工具和库,如Express.js、Koa.js等,它们如何帮助开发者快速搭建和部署应用。通过本文的探讨,读者将获得对Node.js在后端开发中应用的深入理解,以及如何有效利用这一技术来提升开发效率
122 2
|
3月前
|
JavaScript iOS开发 MacOS
掌握NVM、NRM和NPM:Node.js开发的利器
掌握NVM、NRM和NPM:Node.js开发的利器
75 0