CommonJS包規範是理論,NPM是其中的一種實踐。對於Node而言,NPM幫助完成了第三方模塊的發佈、安裝和依賴等。藉助NPM,Node與第三方模塊之間造成了很好的一個生態系統。藉助NPM,能夠幫助用戶快速安裝和管理依賴包。除此以外,NPM還有一些巧妙的用法。下面將詳細介紹NPMhtml
npm
不須要單獨安裝。在安裝Node的時候,會連帶一塊兒安裝npm
node
[注意]關於nodejs的安裝詳細步驟移步至此express
【版本】npm
執行npm –v命令能夠查看當前NPM的版本json
【升級】網絡
不過因爲nodejs更新速度要慢於 npm ,所以在通常狀況下要升級npm到最新版本工具
npm install npm -g
【幫助】測試
在不熟悉NPM的命令以前,能夠直接執行npm命令或npm help命令查看幫助引導說明ui
其中,npm help <command>能夠查看具體的命令說明url
經過npm -l命令能夠查看各個命令的簡單用法
安裝依賴包是NPM最多見的用法,包括全局安裝和本地安裝兩種
【本地安裝】
本地安裝的執行語句是npm install express。執行該命令後,NPM會在當前目錄下建立node_modules目錄,而後在node_modules目錄下建立express目錄,接着將包解壓到這個目錄下
[注意]必須保證從當前的目錄開始一直到根目錄都沒有node_modules或package.json,不然,npm可能會把模塊安裝在有node_modules或package.json的那層目錄
安裝好依賴包後,直接在代碼中調用require('express');便可引入該包。require()方法在作路徑分析的時候會經過模塊路徑查找到express所在的位置。模塊引入和包的安裝這兩個步驟是相輔相承的
【全局安裝】
全局模式並非將一個模塊包安裝爲一個全局包的意思,它並不意味着能夠從任何地方經過require()來引用到它,它的主要目的是命令行工具的使用。若是包中含有命令行工具,那麼須要執行npm install express –g命令進行全局模式安裝
實際上,-g是將一個包安裝爲全局可用的可執行命令。它根據包描述文件中的bin字段配置,將實際腳本連接到與Node可執行文件相同的路徑下
"bin": { "express": "./bin/express" }
經過命令npm root -g能夠查看全局安裝目錄
【其餘安裝】
對於一些沒有發佈到NPM上的包,或是由於網絡緣由致使沒法直接安裝的包,能夠經過將包下載到本地,而後以本地安裝。本地安裝只需爲NPM指明package.json文件所在的位置便可:它能夠是一個包含package.json的存檔文件,也能夠是一個URL地址,也能夠是一個目錄下有package.json文件的目錄位置。具體參數以下:
npm install <tarball file> npm install <tarball url> npm install <folder>
若是不能經過官方源安裝,能夠經過鏡像源安裝。在執行命令時,添加--registry=http://registry.url便可,示例以下:
npm install underscore --registry=http://registry.url
【版本】
如何安裝不一樣版本的依賴包呢?
默認地,使用npm install express命令安裝的是最新版本的express
npm install express
若是要安裝指定版本,如版本3.9.0,則使用@標誌符
npm install express@3.9.0
若是項目依賴了不少package,一個一個地安裝那將是個體力活。咱們能夠將項目依賴的包都在package.json這個文件裏聲明,而後npm install一行命令搞定
npm install
【參數】
在安裝依賴包時,有一些參數須要注意。好比使用-g參數時,表示該依賴包爲全局安裝
參數-S, --save表示安裝包信息將加入到dependencies(生產階段的依賴)
npm install express --save 或 npm install express -S
package.json 文件的 dependencies 字段:
"dependencies": { "express": "^3.9.0" }
參數-D, --save-dev表示安裝包信息將加入到devDependencies(開發階段的依賴),因此開發階段通常使用它
npm install express --save-dev 或 npm install express -D
package.json 文件的 devDependencies字段:
"devDependencies": { "express": "^3.9.0" }
【鏡像安裝】
使用如下代碼後,可使用命令cnpm來實現鏡像安裝
$ npm install -g cnpm --registry=https://registry.npm.taobao.org
經過命令npm ls能夠查看到底安裝了哪些包,若是使用npm ls -g能夠查看全局安裝的依賴包
經過命令npm ls <pkgname> 能夠查看特定依賴包的信息,但輸出的信息比較有限,只有安裝目錄、版本,
若是要查看更詳細信息,可使用命令npm info <pkgname>
npm info express
經過命令npm outdated <pkgname>能夠檢查模塊是否過期
經過命令npm update <pkgname>能夠用來更新模塊(不可行)
npm update express
可是,通過測試該命令並不生效,電腦系統爲window10
使用和安裝模塊相同的命令,能夠更新
npm install express
使用以上命令後,express版本由3.9.0升級到4.15.3
經過命令npm uninstall <pkgname>能夠用來解析模塊
npm uninstall express
【卸載】
卸載依賴包或者說刪除依賴包,只須要在包的安裝目錄下執行如下命令便可
npm uninstall <pkgName>
若是要卸載全局模塊,則須要使用npm root -g命令先找到全局模塊的安裝目錄
而後再使用npm uninstall <pkgname>命令來卸載模塊
若是要在package.json文件中刪除相應代碼,與安裝時相似,須要使用--save-dev或其餘相關參數
npm uninstall <pkgname> --save-dev
爲了將整個NPM的流程串聯起來,下面演示如何編寫一個包,將其發佈到NPM倉庫,並經過NPM安裝回本地
【編寫模塊】
模塊的內容咱們儘可能保持簡單,以sayhello做爲例子,相關代碼以下:
exports.sayHello = function () { return 'Hello, world.'; };
將這段代碼保存爲hello.js便可
【初始化包描述文件】
package.json文件的內容儘管相對較多,可是實際發佈一個包時並不須要一行一行編寫。NPM提供的npm init命令會幫助你生成package.json文件,具體以下所示:
NPM經過提問式的交互逐個填入選項,最後生成預覽的包描述文件。若是你滿意,輸入yes,此時會在目錄下獲得package.json文件
【註冊包倉庫帳號】
爲了維護包,NPM必需要使用倉庫帳號才容許將包發佈到倉庫中。註冊帳號的命令是npm adduser。這也是一個提問式的交互過程,按順序進行便可:
【上傳包】
上傳包的命令是npm publish <folder>。在剛剛建立的package.json文件所在的目錄下,執行 npm publish .開始上傳包,相關代碼以下:
在這個過程當中,NPM會將目錄打包爲一個存檔文件,而後上傳到官方源倉庫中
【安裝包】
爲了體驗和測試本身上傳的包,能夠換目錄或者清空當前目錄執行npm install hello_test_match安裝它:
因而,本身建立的包就下載下來了