1. 程式人生 > >npm用法及離線安裝方法

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搜尋模組路徑會一層一層往上搜索。