2013-07-29 70 views
7

我有一個Node應用程序,我正在部署到Heroku。他們的文檔說最好的做法是check in your node_modules directory(即不要 gitignore它),用於更快部署和開發/產品平價。是否有可能爲devDependencies具有單獨的node_modules文件夾?

在我的package.json中,我有很多devDependencies(主要是Grunt插件及其所有代碼)和一些像Express一樣的常規產品dependencies。 Heroku只需要生產部門。我寧願不檢查我所有的開發代理,因爲它們大約有50MB。

是否有某種方式爲您的開發人員提供單獨的文件夾,例如: node_modules_dev?如果這是可能的,那麼我可以只加node_modules_dev到我的.gitignore,並根據Heroku的建議檢查正常生產node_modules目錄。

有沒有辦法做到這一點?或者你能想出另一種方法去做我想做的事情嗎?

+1

我也很想知道。我目前只是添加dev模塊到.gitignore。 –

+0

如果您手動使用NPM,有一種方法可以使用--prefix來完成此操作。當你運行'npm install'時,你可以控制前綴是什麼,你的模塊將從你指定的文件夾安裝。然而,使用packages.json和Heroku,這無法幫助。 – Slavo

回答

1

如果你不介意檢查它們,你唯一擔心的就是產生的中斷大小(即:不是你的git repo大小,或者將該repo轉移到Heroku),那麼只需將相關的node_modules添加到.slugignore

Docs:Ignoring files with .slugignore

+0

謝謝,不知道'.slugignore'。 slu size大小是我的主要擔憂之一,是的 – callum

2

我使用CI服務器來構建,測試和部署我的文件 - 所以我一直在尋找一種類似的解決方案,以防止我需要在Heroku上部署額外的依賴關係和/或重新構建。

畢竟我的測試運行後,我運行npm prune --production,它從node_modules中刪除devDependencies,然後我將結果推送到Heroku。

沒有額外的文件進入服務器,並且部署時間快得多,因爲Heroku避免了必須構建通常在Gulp/Grunt插件中找到的所有二進制文件。

相關問題