npm 是 node 的模組管理器,功能極其強大。它是 node 獲得成功的重要原因之一。正因為有了npm,我們只要一行命令:npm install,就能安裝別人寫好的模組 。
npm install 命令用來安裝模組到node_modules目錄。
$ npm install
安裝之前,npm install會先檢查,node_modules目錄之中是否已經存在指定模組。如果存在,就不再重新安裝了,即使遠端倉庫已經有了乙個新版本,也是如此。
如果你希望,乙個模組不管是否安裝過,npm 都要強制重新安裝,可以使用 -f 或 --force 引數。
$ npm install --force
二、npm update
如果想更新已安裝模組,就要用到npm update命令。
$ npm update
它會先到遠端倉庫查詢最新版本,然後查詢本地版本。如果本地版本不存在,或者遠端版本較新,就會安裝。
三、registry
npm update命令怎麼知道每個模組的最新版本呢?
答案是 npm 模組倉庫提供了乙個查詢服務,叫做 registry 。以 npmjs.org 為例,它的查詢服務**是 。這個**後面跟上模組名,就會得到乙個 json 物件,裡面是該模組所有版本的資訊。比如,訪問 react ,就會看到 react 模組所有版本的資訊。它跟下面命令的效果是一樣的。
$ npm view react# npm view 的別名
$ npm info react
$ npm show react
$ npm v react
registry **的模組名後面,還可以跟上版本號或者標籤,用來查詢某個具體版本的資訊。比如, 訪問 react/v0.14.6 ,就可以看到 react 的 0.14.6 版。返回的 json 物件裡面,有乙個dist.tarball屬性,是該版本壓縮包的**。
dist: ,
四、快取目錄
$ npm config getcache
$home/.npm
你最好瀏覽一下這個目錄。
$ ls ~/.npm# 或者
$ npm cache ls
你會看到裡面存放著大量的模組,儲存結構是//。
$ npm cache ls react~/.npm/react/react/0.14.6/
~/.npm/react/react/0.14.6/package.tgz
~/.npm/react/react/0.14.6/package/
~/.npm/react/react/0.14.6/package/package.json
每個模組的每個版本,都有乙個自己的子目錄,裡面是**的壓縮包package.tgz檔案,以及乙個描述檔案package/package.json。
$ rm -rf ~/.npm/*# 或者
$ npm cache clean
五、模組的安裝過程
總結一下,node模組的安裝過程是這樣的。
1、發出npm install命令
2、npm 向 registry 查詢模組壓縮包的**
4、解壓壓縮包到當前專案的node_modules目錄
另外,有些場合沒有網路(比如飛機上),但是你想安裝的模組,明明就在快取目錄之中,這時也無法安裝。
六、--cache-min 引數
為了解決這些問題,npm 提供了乙個--cache-min引數,用於從快取目錄安裝模組。 。
$ npm install --cache-min 9999999
$ npm install --cache-min infinity
但是,這並不等於離線模式,這時仍然需要網路連線。因為現在的--cache-min實現有一些問題。
七、離線安裝的解決方案
社群已經為npm的離線使用,提出了幾種解決方案。它們可以大大加快模組安裝的速度。解決方案大致分成三類。
第一類,registry **。
上面三個模組的用法很類似,都是在本機起乙個 registry 服務,所有npm install命令都要通過這個服務**。
有了本機的registry服務,就能完全實現快取安裝,可以實現離線使用。
第二類,npm install替代。
如果能夠改變npm install的行為,就能實現快取安裝。npm-cache 工具就是這個思路。凡是使用npm install的地方,都可以使用npm-cache替代。
$ npm-cache install
第三類,node_modules作為快取目錄。
這個方案的思路是,不使用.npm快取,而是使用專案的node_modules目錄作為快取。
上面兩個工具,都能將專案的node_modules目錄打成乙個壓縮包,以後安裝的時候,就從這個壓縮包之中取出檔案。
npm 模組安裝機制
1.npm 模組安裝機制 2.npm 實現原理 輸入 npm install 命令並敲下回車後,會經歷如下幾個階段 以 npm 5.5.1 為例 執行工程自身 preinstall 當前 npm 工程如果定義了 preinstall 鉤子此時會被執行。確定首層依賴模組 首先需要做的是確定工程中的首層...
npm 模組安裝機制簡介
npm 是 node 的模組管理器,功能極其強大。它是 node 獲得成功的重要原因之一。正因為有了npm,我們只要一行命令,就能安裝別人寫好的模組 npm install本文介紹 npm 模組安裝機制的細節,以及如何解決安裝速度慢的問題。npm install命令用來安裝模組到node modul...
npm模組安裝機制簡介
npm是node的模組管理器,功能及其強大,它是node獲得成功的重要原因之一。正因為有了nom,我們只要一行命令,就能安裝別人寫好的模組。npm install本文介紹npm模組安裝機制的細節,以及如何解決安裝速度慢的問題 一。從npm install說起 npm install 命令用來安裝模組...