Heroku很棒。但每次部署時,Heroku似乎都想重新下載並重新構建所有軟件包。用socket.io
和mailparser
這需要大約3分鐘。加速部署Heroku
有沒有辦法加快部署過程?有沒有辦法告訴Heroku它可以緩存這些項目?或者我可以上傳預構建的node_modules
?
Heroku很棒。但每次部署時,Heroku似乎都想重新下載並重新構建所有軟件包。用socket.io
和mailparser
這需要大約3分鐘。加速部署Heroku
有沒有辦法加快部署過程?有沒有辦法告訴Heroku它可以緩存這些項目?或者我可以上傳預構建的node_modules
?
似乎就像今天Heroku終於緩存了node_modules
文件夾!
----->刪除6個匹配.slugignore模式的文件。
-----> Node.js的應用程序檢測
----->請求的節點範圍:0.10.x
----->解決節點版本:0.10.22
----->下載和安裝節點
----->從緩存恢復node_modules
----->安裝dependen CIES
----->修剪未使用的依賴
----->緩存node_modules用於將來目錄建立
----->清理節點-GYP和NPM工件
構建時間就像我現在3秒鐘。
我加速過程的一件事是將.slugignore文件添加到主文件夾並添加所有不想運行該應用程序的文件和文件夾。 .slugignore文件
示例內容:
工作
樣機
* .PSD
的* .pdf
我有同樣的問題(見Avoid npm refresh after every deployment on Heroku)。
Heroku強制下載/構建/等。因爲他們需要啓動一個帶有「空白頁面」的應用程序:清除以前未刪除的文件,將應用程序移動到另一臺服務器時,分配新的Web dynos等。
問題很明顯, ,並重新編譯。對於所有僅支持js的包,我將它們與我的項目一起提交,並從package.json中刪除它們。它會增加幾秒鐘,但不是那麼多。如果你能夠訪問一個Linux機器(或虛擬機),我應該可以預編譯並提交本地模塊(我成功地在Heroku上運行wkhtml2pdf,例如,爲linux-amd64編譯的二進制文件)具有相同的配置 - 截至今天,Linux [...] 2.6.32-350-ec2 #57-Ubuntu SMP [...] x86_64 GNU/Linux
。
雖然我不會推薦它作爲一個明確的解決方案,因爲它可能會打破某一天 - 在我看來,heroku並沒有保證平臺上運行的應用程序。
我遇到了同樣的問題。
討論一些關於這裏的緩存文件夾node_modules
:https://github.com/heroku/heroku-buildpack-nodejs/pull/37
另一個想法:https://github.com/heroku/heroku-buildpack-nodejs/issues/25
我想約幾個解決方案現在。
入住node_modules
在一個單獨的分支:核心Node.js加載維護者實際上建議在node_modules
文件夾到源代碼控制檢查(適用於應用,而不是庫)。我不喜歡這個。解決這個問題的一種方法可能是將一個單獨的production
分支與不同的.gitignore
文件分開,該文件不會忽略node_modules
。當你想部署時,只需從你的主服務器進行重新綁定,並且node_modules
將被簽入。至少這會讓你的主分支免於依賴。
添加preinstall
腳本package.json
下載壓縮ZIP依賴:您還可以添加一個推預混帳掛鉤捆綁了你的依賴,並將其上傳到S3。這可能會太慢。
修改heroku-buildpack-nodejs
:與node_modules
緩存整合優秀的拉力要求:
heroku config:set BUILDPACK_URL=https://github.com/opdemand/buildpack-nodejs.git
好像最近有在heroku-buildpack-nodejs進展。
一旦拉入請求合併,您可以添加
heroku config:set BUILDPACK_URL=https://github.com/heroku/heroku-buildpack-nodejs
您heroku environment variables。
現在,杜大偉的分叉庫可在
https://github.com/ddollar/heroku-buildpack-nodejs
以此爲您BUILDPACK_URL
應該緩存NPM模塊。 我嘗試了node.js 0.10.5a,npm版本:1.3.5和npm_modules在.gitignore
。 Tt似乎迄今爲止工作得很好!
檢查出新的Heroku的Node.js buildpack的這個分支,現在處於測試階段,它支持之間node_modules緩存構建:
https://github.com/heroku/heroku-buildpack-nodejs/tree/diet
要使用它:
heroku config:set BUILDPACK_URL=https://github.com/heroku/heroku-buildpack-nodejs#diet -a my-node-app
git commit -am "fakeout" --allow-empty
git push heroku
[build-pack](https:// github。com/heroku/heroku-buildpack-nodejs)(這是將你的源代碼轉換爲在Heroku上部署的代碼)應該已經在構建之間緩存'node_modules'。至少它在自述文件中這樣說。你確定這是什麼放緩你的構建? – friism
@friism我猜他們使用標準的NPM緩存,所以模塊仍然需要解壓縮,複製,最重要的是,每次推後重新編譯。如果您的模塊具有混雜的依賴關係樹或取決於C++擴展(mongodb,socket.io等),則需要一些時間。 –