NodeJS 是一门年轻的语言,扩展模块并不太全,经常我们想用某个模块但是却找不到合适的。比如前两天我需要使用hmac和sha1来做签名,就没有找到一个比较好用的模块,这时候就需要我们自己来实现相应的功能了。自己写完之后,再把它打包成一个模块分享给大家来用,即方便了其他人,又能让自己有点小小的成就感,实在是一件一举多得的好事情。接下来,我就为大家介绍一下如何封装一个NodeJS模块并把它分享给其他人。
NPM (Node Package Manager, http://npmjs.org ) 是 NodeJS 的模块管理软件,除 NodeJS 内置的核心模块外,其他模块的安装、卸载等管理操作都要通过 NPM 来进行,我们自己写的模块,就要发布到NPM上来供其他人使用。
接下来,我们做一个非常简单的模块 “hello”,这个模块的功能只有一个:提供一个参数 “name” ,它在控制台输出 “Hello name”。在开始之前,我们首先要把node和npm装好,安装方法在其官方网站都有介绍,这里就不再多说了。
首先,我们创建一个名为”hello”的目录,作为模块的主目录。进入该目录,开始我们的工作。
然后,写模块的核心代码,很简单,只有以下三行:
exports.Hello = function ( name ) {
console.log( "Hello " + name );
}
把它保存为 hello.js。
NodeJS每个扩展模块中都有一个package.json文件,用来描述模块的一些基本属性,比如模块名称、作者、版本号等等。关于package.json写法的详细说明,可以使用 “npm help json” 命令来查看。
我们可以在模块主目录下执行 npm init 来生成一个最基本的package.json。按照命令的提示依次输入信息即可。以下是在 hello 目录下执行 npm init 并填入相关信息后的结果:
-
<spanstyle="color:#333333;">$npminit
-
Packagename:(hello)//模块名字,npminit会自动取当前目录名作为默认名字,这里不需要改,直接确认即可
-
Description:Aexampleforwriteamodule//模块说明
-
Packageversion:(0.0.0)0.0.1//模块版本号,这个大家按自己习惯来定就可以
-
Projecthomepage:(none)//模块的主页,如果有的话可以填在这里,也可以不填
-
Projectgitrepository:(none)//模块的git仓库,选填。npm的用户一般都使用github做为自己的git仓库
-
Authorname:ElmerZhang//模块作者名字
-
Authoremail:(none)freeboy6716@gmail.com//模块作者邮箱
-
Authorurl:(none)http://www.elmerzhang.com//模块作者URL
-
Mainmodule/entrypoint:(none)hello.js//模块的入口文件,我们这里是hello.js</span><spanstyle="color:#ff6666;">(这个必填)</span><spanstyle="color:#333333;">
-
Testcommand:(none)//测试脚本,选填
-
Whatversionsofnodedoesitrunon?(~v0.5.7)*//依赖的node版本号,我们这个脚本可以运行在任何版本的node上,因此填*
-
Abouttowriteto/home/elmer/hello/package.json
-
//以下是生成的package.json文件内容预览
-
{
-
"author":"ElmerZhang<freeboy6716@gmail.com>(http://www.elmerzhang.com)",
-
"name":"hello",
-
"description":"Aexampleforwriteamodule",
-
"version":"0.0.1",
-
"repository":{
-
"url":""
-
},
-
"main":"hello.js",
-
"engines":{
-
"node":"*"
-
},
-
"dependencies":{},
-
"devDependencies":{}
-
}
-
-
Isthisok?(yes)//对以上内容确认无误后,就可以直接回车确认了</span>
到此为止,我们这个模块就写完了。这时hello目录下应该有两个文件:hello.js和package.json。
我们可以返回到hello的上级目录,来测试安装一下这个模块:
$ npm install hello/
hello@0.0.1 ./node_modules/hello
显示安装成功。简单的测试一下:
$ node
> var Hello = require('hello').Hello;
> Hello('world');
Hello world
正确输出了”Hello world”。
接下来我们把它发布到NPM上。
首先,我们需要有一个NPM帐号,可以使用npm adduser来注册一个:
$ npm adduser
Username: elmerzhang
Password:
Email: freeboy6716@gmail.com
简单三步,一个NPM用户注册成功。
最后回到 hello 根目录,执行一下npm publish,如果没有任何错误提示,那么就发布成功了。去http://search.npmjs.org/上看一下吧,你的模块应该已经显示在”Latest
Updates”一栏里了。
至此,一个NodeJS模块成功发布到NPM,以后就可以在任何能访问npm库的地方通过npm install来安装你的模块了。
分享到:
相关推荐
使用Node.js进行抓包,我们首先要安装Node.js环境,然后通过npm(Node.js的包管理器)安装所需的模块。例如,在上述示例中,使用了cheerio和request模块。cheerio模块能够解析HTML,让开发者能像使用jQuery一样操作...
而将Node.js的项目打包并发布为npm包,以及将之制作成命令行工具,是开发流程中的一项重要技能。 首先,在准备创建npm包时,应先检查npm官方仓库中是否有同名的包存在,以便避免命名冲突。这可以通过在命令行中执行...
适用于Electron Minecraft启动器的NodeJS模块 优点 :dizzy: EMC-Core是Pierce01对开发人员的升级 自动检查并下载兼容的Java版本 支持100%自定义Minecraft版本 使用ftp而无需任何zip文件,只需将ftp文件夹放在ftp中...
在使用这些模块时,首先需要通过npm安装相应的npm包。例如,安装node-xlsx模块,可以使用以下命令: ```javascript npm install node-xlsx ``` 接下来,我们将通过node-xlsx模块来展示一个简单的读取和写入Excel...
本文实例讲述了nodejs基于WS模块实现WebSocket聊天功能的方法。分享给大家供大家参考,具体如下: WebSocket 模块众多,我选择了一个较为简单的模块 进行了实现。 工具:Sublime 技术:Node.js 引用模块 ws 最终效果...
NodeJS实验室 本文档是一份正在进行的工作。 表中的内容 NodeJS 简介 CommonJS 模块 npm 介绍 全局变量、进程和缓冲区 异步模式 事件循环 ...控制流和异常处理 ... 按照惯例,NodeJS 决定使用 CommonJS 模块规范
这是一个测试版。 普拉塔 Prata允许您通过3个简单的步骤来生成和/或编辑数据: ... 在后台,我们正在使用: 和皮棉和管理客户端的JS。 预处理CSS。 从模板生成HTML。 图书馆 CSS 引导程序 代码镜像
该存储库包含NodeJS学院的Udemy课程制作的所有实践和应用程序。 应用范围: 在本节中,我将添加有关开发的应用程序的安装和使用的信息。 猪游戏 :video_game: 一个小型骰子游戏,将在其中建立极限得分,并且首先...
很明显,这是一个模块,我们需要如何使用它的说明,所以下面是如何使用该模块! 安装 要将模块导入 npm,请执行以下操作: npm i gitapi.it 您将成功导入包! 然后在你的打字稿代码中: import * as git from '...
本篇将详细介绍如何使用Node.js来构建一个基础的网页爬虫,主要涉及request、cheerio模块以及数据库操作。 首先,确保你的开发环境中已经安装了Node.js。如果没有,你可以访问官网(https://nodejs.org/)下载并按照...
在实践这个项目时,你将学习到如何处理HTTP请求和响应、如何使用路由、如何读写文件(通过FS模块),以及如何利用npm包管理第三方库。例如,你可以用`express`框架简化服务器的构建,或者用`body-parser`解析POST...
节点和简单更新管理器 一个非常简单的Windows OS上Electron应用程序的更新管理器...安装npm install nodejs-sum依赖Electron Node.js adm-zip用法在您的项目中导入模块: const sumHelper = require ( 'nodejs-sum' ) ;
你需要全局安装Node.js和npm(Node包管理器),然后在项目目录下初始化一个新的npm项目,使用`npm init`命令生成package.json文件。接着,安装Express和MongoDB相关的库,如`express`、`mongoose`(用于Node.js操作...
标题中提到的知识点是“Node.js操作MongoDB的CRUD(创建(Create)、读取(Read)、更新(Update)、删除(Delete))模块的制作和引入实例”。这部分内容主要讲述如何在Node.js中创建一个可以对MongoDB数据库进行基本操作的...
使用`npm init`命令创建`package.json`文件,并安装必要的依赖库,包括Express、body-parser(处理请求体数据)、cookie-parser(处理Cookie)以及multer(处理multipart/form-data类型的表单数据)。 安装Express...
简单的音乐机器人,仅使用npm模块制作而成,这是尝试不使用lavalink的挑战。 安装 下载文件,并用凭据填充.env文件。 运行类型node index.js 贡献 拉请求是受欢迎的。 对于重大更改,请先打开一个问题以讨论您要更改...
以下列举了主要使用和比较重要的模块。 **express-session**: 用于设置客户端cookie以验证登录状态和用户权限,对于不同用户只能删除自己发表的评论,只有管理员可以发表文章和操作所有评论。 **ejs**: 用于使用...
使用按钮、Arduino 和声音播放(在计算机上) index.js:使用 WeatherUnderground.com 的 JSON API 制作简单温度计的完成示例== 安装 == 下载所有项目文件并运行npm install以安装所需的节点模块。 然后在您的...
在 nodejs 中制作。 它在工作目录中搜索 build.xml 或 manifest.xml 文件。 如果找到,它会解析 xml 以查找包含模块版本号的节点,然后将其打印出来,或者对其进行碰撞。 的版本必须是一个语义版本号(major.minor...
listen ( )安装这是一个可通过github访问的模块使用npm install命令完成npm install $ npm install github:MichelGerding/NodeJS-HttpsServer --save特征强大的路由易于使用的中间件使用字符串文字语法的模板引擎...