nodejs模塊發布及命令行程序開發


前置技能

  • 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,內容如下:

此時模塊就創建完畢了,簡單吧!

發布模塊

在剛剛新建的文件夾下打開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目錄

新建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中配置

模塊在npm install的時候會生成zoucz和zoucz_err兩個cmd文件。

發布模塊

添加好上面的配置后,發布模塊,別的碼農就可以安裝使用此命令了。

安裝使用控制台命令程序

在cmd中 npm install -g zoucz ,就可以安裝上面的模塊,安裝完成后可以使用zoucz命令和zoucz_err命令。

zoucz_err是沒有在js文件首行寫#!/usr/bin/env node的后果:

運行命令之后:

我們順着圖片中的路徑,在C:\Users\czzou\AppData\Roaming\npm目錄下可以找到npm為我們創建的cmd文件路徑:

可以看到npm創建cmd文件的同時也創建了linux下使用的文件。
現在來看一下為什么執行zoucz_err會報錯,分別打開兩個cmd文件:
zoucz.cmd

zoucz_err.cmd

后者壓根就沒有用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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM