npm用法及離線安裝方法
基本的用法
檢視某個模組的全部資訊,或者可以檢視單個資訊
npm info name
npm info name version
npm info name homepage
install支援多種手段,包名,git路徑,包括本地路徑也可以
sudo npm install -global [package name]
npm install git://github.com/package/path.git
npm install git://github.com/package/path.git#0.1.0
npm install [email protected]version
npm install path/to/somedir //本地路徑
前提是本地路徑裡面包含一個完整的包,或者檔案裡面有合格的package.json檔案即可
檢視裝好了哪些包
npm list
npm -global list
配置檔案基本用法
配置就是修改npmrc檔案了。用命令行同樣也是修改此檔案。
npmrc存在三個位置,修改使用者目錄下的檔案就更合適了。
~/.npmrc (使用者主目錄,win系統在C:\Users\$使用者名稱\.npmrc)
修改檔案就不用說了,命令配置方法
npm config set key=value
npm config set proxy=http ://127.0.0.1:8087
具體的用法和具體key value可以通過開啟說明文件檢視
npm help npm
配置項可以通過以下命令檢視已經配置過的項
npm config list
npm config list -l
配置代理,全域性目錄,源
下面正式介紹對付國內網路的方法了
首先幾個重要的配置項一一介紹
prefix -- 全域性安裝的路徑,也就是npm install -g 安裝的模組在哪個位置。這個看個人喜好。我喜好將他設定到安裝路徑下面。
proxy -- 代理(http的代理是用這個),代理連外網的朋友這個就需要配置了。
https_proxy -- https代理
registry -- 類似linux的軟體源,這個一定要修改的
npm config set prefix "c:\nodejs"
npm config set proxy=http://127.0.0.1:8087
npm config set https_proxy=http://127.0.0.1:8087
npm config set registry=http://registry.npmjs.org
registry=http://registry.npmjs.org 這句很重要,注意預設的源是https://registry.npmjs.org 是https的,反正我連預設的源是從來沒成功過一次。
上例我把他修正為不加密http的就基本能正常了。
網路不行可以考慮一些國內的源試試,例如
npm config set registry "http://r.cnpmjs.org/"
離線安裝
有許多環境下即便配置了代理,修改了源還是出現網路問題。常見的提示是shasum check failed。當然這不一定就是網路不行,但大部分情況下是網路連線不通暢導致的。
這種情況下可以手工下載並安裝,其實也很簡單。
首先找到想辦法把你需要的包下載下來,這個可以多種辦法了。或者從其他機器拷過來。
例如先npm info mysql 檢視mysql這個包的資訊,包資訊裡面會有軟體主頁或者程式碼倉庫地址。一半在github上。(install因為要下載可能會失敗,但是info指令資訊少通常可以成功)。
下載來之後解壓到工程的node_modules目錄下就是安裝好了,就這麼簡單。
Project
---package.json
---index.js
---node_modules // 解壓到此目錄就行了(每個包資料夾下面有package.json,index.js檔案的。)
注意:你下載下來的原始碼包可能和模組名字不一樣。要將改名成模組名再拷貝進node_modules 中去。例如將node-mysql資料夾改名成mysql。
包之間的依賴關係離線安裝問題
上面方法安裝的包不會包含依賴的包,不過依賴包同樣用上面離線一個個安裝的辦法也可以。
例如mysql包就依賴bignumber.js , readable-stream , require-all 三個包。npm預設情況下安裝的依賴包會是一層一層往下的。例如安裝好mysql工程結構會是這樣的
Project
---package.json
---index.js
---node_modules
---mysql
---node_modules
---bignumber.js
---readable-stream
---require-all
你同樣只需要相同的操作將依賴的包放到相應的位置便可。這樣包管理的結構雖然複雜但是依賴關係很清晰。但是這個規定不一定非要這樣,你也可以將依賴包放到第一層的node_modules資料夾下。nodejs搜尋模組路徑會一層一層往上搜索。