nodejs模組釋出及命令列程式開發

桃子夭夭發表於2016-02-17

前置技能

  • npm工具為nodejs提供了一個模組和管理程式模組依賴的機制,當我們希望把模組貢獻出去給他人使用時,可以把我們的程式釋出到npm提供的公共倉庫中,為了方便模組的管理,npm規定要使用一個叫package.json的檔案來描述我們模組的名稱、版本等資訊。
  • 我們貢獻出去的程式模組,可能也依賴了別人所編寫的模組,所以需要在package.json中寫明我們依賴了哪些模組,便於別人安裝。
  • 簡單的nodejs程式可以通過 node xxx.js 來執行,當我們希望直接在控制檯中使用xxx命令執行nodejs程式時,需要建立一個cmd命令檔案(windows下),並把它放到path路徑下,npm提供了一個自動完成這個工作的流程,這個也是在package.json裡邊配置的。

基於以上幾點,我覺得有必要挨個理解一下package.json裡邊的配置項:我理解翻譯的package.json文件

模組釋出

釋出一個npm模組非常簡單。

註冊npm賬戶

這個賬戶註冊體驗多好啊,不過記得密碼別搞忘記了。
npm adduser
Username: zoucz
Password: ******
Email: 405966530@qq.com

建立一個測試模組

新建一個資料夾,npm init,一路enter ,要注意的是name不能是已經被別人搶佔的,可以到http://npmjs.org這裡查詢。
此時資料夾下會生成一個package.json檔案,如果看過package.json裡邊配置的含義,這裡就比較好理解了。
新建一個index.js,內容如下:
nodejs模組釋出及命令列程式開發
此時模組就建立完畢了,簡單吧!

釋出模組

在剛剛新建的資料夾下開啟cmd,執行npm publish ,模組釋出完畢!
要注意的是每次釋出的時候都需要增加版本號。
此時在http://npmjs.org這裡就可以查詢到剛剛釋出的模組了,我測試模組名稱是zoucz,那麼此時別人也可以通過 npm install zoucz來使用我釋出的模組了。

開發控制檯命令程式

以windows下為例,我們怎麼樣才能建立一個cmd命令呢?

1.在環境變數裡邊新增一段:";D:/test"

2.在d盤test目錄下建立一個mycmd.cmd檔案

這時就可以使用mycmd命令了。那麼要怎麼在cmd中呼叫node程式呢? 很簡單:

3.在那個mycmd.cmd檔案裡邊寫上 node path/to/xxx.js,就可以了。

使用npm建立控制檯命令程式,我們不需要自己完成上面的步驟,只需要增加一行配置就可以了

新增要執行的nodejs程式碼檔案

在模組根目錄下新增bin目錄
nodejs模組釋出及命令列程式開發
新建zoucz.js內容如下:

#!/usr/bin/env node
var util=require("util");
console.log("hello,i'm zouchegnzhuo,you can type command name/site/email");
var cmd=process.argv[2];
if(cmd){
    switch(cmd){
        case "name":
            console.log("鄒成卓");
            break;
        case "site":
            console.log("http://zoucz.com");
            break;
        case "email":
            console.log("405966530@qq.com");
            break;
    }
}

要注意的是,檔案首行的 #!/usr/bin/env node 一定要新增 ,這一行的意思是生成cmd檔案的時候用什麼路徑的什麼程式來執行上面的程式碼,文章末尾的demo中給出了不加的後果。

在package.json中配置bin

在package.json中配置
nodejs模組釋出及命令列程式開發
模組在npm install的時候會生成zoucz和zoucz_err兩個cmd檔案。

釋出模組

新增好上面的配置後,釋出模組,別的碼農就可以安裝使用此命令了。

安裝使用控制檯命令程式

在cmd中 npm install -g zoucz ,就可以安裝上面的模組,安裝完成後可以使用zoucz命令和zoucz_err命令。
nodejs模組釋出及命令列程式開發

zoucz_err是沒有在js檔案首行寫#!/usr/bin/env node的後果:
nodejs模組釋出及命令列程式開發
執行命令之後:
nodejs模組釋出及命令列程式開發

我們順著圖片中的路徑,在C:\Users\czzou\AppData\Roaming\npm目錄下可以找到npm為我們建立的cmd檔案路徑:
nodejs模組釋出及命令列程式開發
可以看到npm建立cmd檔案的同時也建立了linux下使用的檔案。
現在來看一下為什麼執行zoucz_err會報錯,分別開啟兩個cmd檔案:
zoucz.cmd
nodejs模組釋出及命令列程式開發
zoucz_err.cmd
nodejs模組釋出及命令列程式開發
後者壓根就沒有用node去執行那段程式碼,當然會報錯了~
這裡要注意的是npm install -g 全域性安裝的時候,cmd檔案是被建立在上面的路徑下的,如果沒有-g選項,區域性安裝,則會被建立在專案根目錄node_modules/.bin 目錄下。

最後

npm可以幫我們做很多事情,做node開發的同學們都有必要花時間慢慢把npm的文件啃完https://docs.npmjs.com
本文所使用的demo地址:https://github.com/zouchengzhuo/nodejsLearn/tree/master/zoucz

本文轉自我的個人網站,原文地址,歡迎前往交流討論

相關文章