【轉】npm用法及離線安裝方法

 

原文轉自:https://cnodejs.org/topic/51c908f873c638f370d02985

 

暫未驗證

基本的用法

查看某個模塊的全部信息,或者可以查看單個信息

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

 

配置文件基本用法

配置就是修改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-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搜索模塊路徑會一層一層往上搜索。

 

發佈了88 篇原創文章 · 獲贊 4 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章