npm 和 yarn 緩存策略對比

前幾天 npm@5 發佈,其中最大的改進是對緩存策略的更新,本文對比一下 npm@5 和 yarn 的緩存策略。npm

npm

緩存命令

npm cache 提供了三個命令,分別是npm cache add, npm cache clean, npm cache verify緩存

npm cache add

官方解釋說這個命令主要是 npm 內部使用,可是也能夠用來手動給一個指定的 package 添加緩存。(This command is primarily intended to be used internally by npm, but it can provide a way to add data to the local installation cache explicitly.)網絡

npm cache clean

刪除緩存目錄下的全部數據。從 npm@5 開始,爲了保證緩存數據的有效性和完整性,須要加上 --force 參數。koa

npm cache verify

驗證緩存數據的有效性和完整性,清理垃圾數據。ide

緩存策略

npm 的緩存目錄是經過 cache 變量指定的,通常默認是在 ~/.npm 文件夾(Windows 系統在 %AppData%/npm-cache 文件夾),能夠執行下面的命令查看code

npm config get cache

在 npm@5 之前,每一個緩存的模塊在 ~/.npm 文件夾中以模塊名的形式直接存儲,例如 koa 模塊存儲在 ~/.npm/koa 文件夾中。而 npm@5 版本開始,數據存儲在 ~/.npm/_cacache 中,而且不是以模塊名直接存放。blog

npm 的緩存是使用 pacote 模塊進行下載和管理,基於 cacache 緩存存儲。因爲 npm 會維護緩存數據的完整性,一旦數據發生錯誤,就回從新獲取。所以不推薦手動清理緩存,除非須要釋放磁盤空間,這也是要強制加上 --force 參數的緣由。ci

目前沒有提供用戶本身管理緩存數據的命令,隨着你不斷安裝新的模塊,緩存數據也會愈來愈多,由於 npm 不會本身刪除數據。文檔

離線安裝

npm 提供了離線安裝模式,使用 --offline, --prefer-offline, --prefer-online 能夠指定離線模式。get

--prefer-offline / --prefer-online

「離線優先/網絡優先」模式。

  • 若是設置爲 --prefer-offline 則優先使用緩存數據,若是沒有匹配的緩存數據,則從遠程倉庫下載。

  • 若是設置爲 --prefer-online 則優先使用網絡數據,忽略緩存數據,這種模式能夠及時獲取最新的模塊。

--offline

徹底離線模式,安裝過程不須要網絡,直接使用匹配的緩存數據,一旦緩存數據不存在,則安裝失敗。

yarn

緩存命令

yarn cache 提供了三個命令,分別是yarn cache ls, yarn cache dir, yarn cache clean

yarn cache ls

列出當前緩存的包列表。

yarn cache dir

顯示緩存數據的目錄。

yarn cache clean

清除全部緩存數據。

緩存策略

官方文檔沒有詳細介紹緩存策略,不過進入緩存目錄也能夠看出一些端倪。在 ~/Library/Caches/Yarn 文件夾中,每一個緩存的模塊被存放在獨立的文件夾,文件夾名稱包含了模塊名稱、版本號等信息。

離線安裝

yarn 默認會使用 「prefer-online」 的模式,也就是先嚐試從遠程倉庫下載,若是鏈接失敗則嘗試從緩存讀取。yarn 也提供了 --offline 參數,即經過 yarn add --offline 安裝依賴。

另外 yarn 還支持配置離線鏡像,經過如下命令設置離線緩存倉庫。具體細節參照官方博客《Running Yarn offline》

yarn config set yarn-offline-mirror ./npm-packages-offline-cache
相關文章
相關標籤/搜索