NodeJS 模組開發及發布詳解分享

來源:互聯網
上載者:User

比如前兩天我需要使用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來安裝你的模組了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.