基於以上幾點,我以爲有必要挨個理解一下package.json裏邊的配置項:我理解翻譯的package.json文檔javascript
發佈一個npm模塊很是簡單。java
這個帳戶註冊體驗多好啊,不過記得密碼別搞忘記了。
npm adduser
Username: zoucz
Password: ******
Email: 405966530@qq.comnode
新建一個文件夾,npm init,一路enter ,要注意的是name不能是已經被別人搶佔的,能夠到http://npmjs.org這裏查詢。
此時文件夾下會生成一個package.json文件,若是看過package.json裏邊配置的含義,這裏就比較好理解了。
新建一個index.js,內容以下:
此時模塊就建立完畢了,簡單吧!linux
在剛剛新建的文件夾下打開cmd,運行npm publish ,模塊發佈完畢!
要注意的是每次發佈的時候都須要增長版本號。
此時在http://npmjs.org這裏就能夠查詢到剛剛發佈的模塊了,我測試模塊名稱是zoucz,那麼此時別人也能夠經過 npm install zoucz來使用我發佈的模塊了。git
以windows下爲例,咱們怎麼樣才能建立一個cmd命令呢?github
1.在環境變量裏邊添加一段:";D:/test"npm
2.在d盤test目錄下建立一個mycmd.cmd文件json
這時就可使用mycmd命令了。那麼要怎麼在cmd中調用node程序呢? 很簡單:windows
3.在那個mycmd.cmd文件裏邊寫上 node path/to/xxx.js,就能夠了。app
使用npm建立控制檯命令程序,咱們不須要本身完成上面的步驟,只須要增長一行配置就能夠了
在模塊根目錄下添加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中配置
模塊在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
本文轉自個人我的網站,原文地址,歡迎前往交流討論