[英]Should I have Travis cache node_modules or $HOME/.npm
我注意到緩存node_modules
文件夾會導致問題(構建失敗),而緩存.npm
緩存避免了它。 我相信這是因為.npm
緩存不存儲編譯的本機模塊,而node_modules
文件夾存儲。 因此,當您測試不同版本的node
,正如在 Travis-CI 中常見的那樣,它會嘗試加載為node
6 和 barf 中的node
4 編譯的本機模塊。
跟進@John 的回答。
為了嚴格遵守package-lock.json
上的package-lock.json
,Travis CI 上的 NPM 安裝過程現在默認為新的npm ci
(我認為ci
代表持續集成)而不是npm install
。 這有助於防止安裝不遵循正確語義版本控制的軟件包。
為此, npm ci
需要首先擺脫依賴圖和node_modules
所有緩存編譯模塊從以前的構建中重構依賴圖。 它通過在開始自己的安裝之前完全刪除node_modules
。 但這也意味着node_modules
不能再用作 Travis 上的緩存位置。 我們現在必須使用"$HOME/.npm"
來緩存,@ "$HOME/.npm"
已經解釋了使用"$HOME/.npm"
的原因。 如果您繼續使用node_modules
作為緩存位置,Travis 會向您拋出一個錯誤,抱怨"/node_modules/.bin/npm cannot be found"
,因為在運行npm ci
時node_modules
已被刪除。
現在關於使用哪個緩存位置......
$HOME/.npm
當您想使用現在默認的npm ci
,請將這些更改包含在您的.travis.yml
# [optional] `npm ci` is now default on Travis install: - npm ci # Keep the npm cache around to speed up installs cache: directories: - "$HOME/.npm"
node_modules
如果你想堅持舊的npm install
# Specify `npm install` install: - npm install # Continue to use the old cache location cache: directories: - "node_modules"
警告:您的緩存位置取決於您選擇的安裝方法,並且不能與其他方法交織在一起。 否則,您可能會失去緩存的好處,或者更糟的是,Travis 構建失敗。
您可以在NPM 文檔中找到有關npm ci
更多信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.