2013-07-29 4 views
7

Ich habe eine Knoten-App, die ich für Heroku bereitstelle. Ihre Dokumente sagen, es ist Best Practice zu check in your node_modules directory (d. H. nicht Gitignore es), für schnellere Bereitstellungen und für dev/prod Parität.Ist es möglich, einen separaten Ordner node_modules für devDependencies zu haben?

In meinem package.json, ich habe eine Menge devDependencies (meist Grunt Plugins und alle ihre deps) bekam und ein paar regelmäßige Produktion dependencies wie Express. Heroku benötigt nur die Produktionsschritte. Ich würde lieber nicht alle meine Dev-Deps einchecken, weil sie auf etwa 50 MB kommen.

Gibt es eine Möglichkeit, einen separaten Ordner für Ihre Dev-Deps zu haben, z. node_modules_dev? Wenn das möglich wäre, dann könnte ich einfach node_modules_dev zu meinem .gitignore hinzufügen, und überprüfen Sie in der regulären Produktion node_modules Verzeichnis nach Herokus Ratschlag.

Gibt es eine Möglichkeit, dies zu tun? Oder kannst du dir einen anderen Weg vorstellen, um das zu tun, was ich versuche?

+1

Ich würde es auch gerne wissen. Ich bin gerade dabei, Dev-Module zu .gitignore hinzuzufügen. –

+0

Wenn Sie NPM manuell verwenden, gibt es eine Möglichkeit, dies mit einem --prefix zu tun. Wenn Sie 'npm install' ausführen, können Sie steuern, was das Präfix ist, und Ihre Module werden dort aus dem angegebenen Ordner installiert. Mit packages.json und Heroku kann das jedoch nicht helfen. – Slavo

Antwort

1

Wenn es Ihnen nichts ausmacht, sie trotzdem zu überprüfen, und Ihre einzige Sorge ist die resultierende Slug-Größe (dh nicht Ihre git Repo-Größe oder Übertragung dieser Repo zu Heroku), dann fügen Sie einfach die relevanten node_module .slugignore .

Text: Ignoring files with .slugignore.

+0

Danke, war'.slugignore' nicht bekannt. Die Größe der Schnecken war eines meiner Hauptanliegen, ja – callum

2

Ich benutze einen CI-Server, um meine Dateien zu erstellen, zu testen und bereitzustellen - also suchte ich nach einer ähnlichen Lösung, die mich davon abhalten würde, zusätzliche Abhängigkeiten zu implementieren und/oder auf Heroku aufzubauen.

Nachdem alle meine Tests ausgeführt haben, starte ich npm prune --production, die devDependencies von node_modules entfernt, und dann schiebe ich das Ergebnis an Heroku.

Keine zusätzlichen Dateien gehen zum Server, und die Bereitstellungszeiten sind viel schneller, da Heroku vermeidet, alle Binärdateien zu erstellen, die normalerweise in Gulp/Grunt-Plugins gefunden werden.

Verwandte Themen