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 package_name@version npm install path/to/somedir //本地路徑
前提是本地路徑里面包含一個完整的包,或者文件里面有合格的package.json文件即可
查看裝好了哪些包
npm list npm -global list
配置文件基本用法
修改文件就不用說了,命令配置方法
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-mysql的地址在https://github.com/felixge/node-mysql
下載來之后解壓到工程的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搜索模塊路徑會一層一層往上搜索。