NodeJS 模塊開發及發布詳解

openkk 12年前發布 | 89K 次閱讀 NodeJS Node.js擴展

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 并填入相關信息后的結果:

$ npm init
Package name: (hello)     //模塊名字,npm init會自動取當前目錄名作為默認名字,這里不需要改,直接確認即可
Description: A example for write a module    //模塊說明
Package version: (0.0.0) 0.0.1    //模塊版本號,這個大家按自己習慣來定就可以
Project homepage: (none)     //模塊的主頁,如果有的話可以填在這里,也可以不填
Project git repository: (none)    //模塊的git倉庫,選填。npm的用戶一般都使用github做為自己的git倉庫
Author name: Elmer Zhang    //模塊作者名字
Author email: (none) freeboy6716@gmail.com     //模塊作者郵箱
Author url: (none) http://www.elmerzhang.com    //模塊作者URL
Main module/entry point: (none) hello.js     //模塊的入口文件,我們這里是hello.js
Test command: (none)    //測試腳本,選填
What versions of node does it run on? (~v0.5.7) *   //依賴的node版本號,我們這個腳本可以運行在任何版本的node上,因此填 *
About to write to /home/elmer/hello/package.json
// 以下是生成的package.json文件內容預覽
{
  "author": "Elmer Zhang <freeboy6716@gmail.com> (http://www.elmerzhang.com)",
  "name": "hello",
  "description": "A example for write a module",
  "version": "0.0.1",
  "repository": {
    "url": ""
  },
  "main": "hello.js",
  "engines": {
    "node": "*"
  },
  "dependencies": {},
  "devDependencies": {}
}

Is this ok? (yes)   //對以上內容確認無誤后,就可以直接回車確認了

到此為止,我們這個模塊就寫完了。這時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來安裝你的模塊了。

轉自:http://www.elmerzhang.com/2011/09/nodejs-module-develop-publish/?replytocom=391

 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!