Sollen kompilierte JavaScript und CSS Frontend Assets ins GIT?

Für diese Webseite verwende ich das Laravel-Framework und für die Versionierung GIT. Wie auch bei anderen Frameworks werden die JavaScript und CSS Files dabei über npm verwaltet und für die Verwendung zusammengefasst: kompiliert.  

npm

NPM ist ein Paketmanager für JavaScript-Sourcen. Über npm können JavaScript-Bibliotheken  heruntergeladen und zu einer Datei zusammengefasst werden. Als Beispiel fügt der Befehl "npm run prod" alle Sourcen und den eigenen JavaScript-Code sowie CSS in jeweils eine Datei zusammen: app.js und app.css. Im Browser reicht es dann, die app.js-Datei als Script-Quelle zu verwenden und app.css als Style-Quelle. Welche Pakete heruntergeladen werden sollen steht in der Datei: package.json. Die Sourcen werden in den Ordner node-modules geladen. 

Einsatz neuer Assets

Anfangs habe ich den Befehl "npm run prod" beim Einsatz neuer Versionen am eigentlichen Webserver ausgeführt. Eine Zeit lang hatte ich damit keine Probleme. Mit steigender Zahl an Webseiten und anderen Diensten am Server und nachdem auch das Webserver-Setup mehr Arbeitsspeicher benötigt, bin ich beim Kompilieren der Assets an die Speichergrenze des Webservers gekommen, zuletzt hat npm mehr als 1GB Arbeitsspeicher für den Vorgang vereinnahmt: Nicht gut, wenn dieser nicht mehr frei ist. Dann hatte ich in der Vergangenheit immer wieder Probleme mit der Kompatibilität einzelner neuer Pakete und deren Abhängigkeiten: Probleme die nicht auf einem produktiven Webserver gelöst werden sollen, da die Webseite mitunter in dieser Zeit nicht mehr richtig funktioniert. Aktuell habe ich aus den beschriebenen Gründen die kompilierten Assets zusätzlich in mein GIT-Repository aufgenommen. Kompiliert werden die Assets auf meinem Rechner.

Entwicklungsumgebung

Nachdem ich für den Betrieb der Webseite Docker verwende, betreibe ich einen identischen Container als Testumgebung auf meinem Rechner. Dies ermöglicht es, die Assets über den Testcontainer zu kompilieren und im Anschluss auf den Webserver zu übertragen. 

Fazit

Eigentlich gehören kompilierte Assets genausowenig wie die heruntergeladenen Sourcen (node-modules) ins Git, da diese aus den bestehenden Files mit einem erneuten Download und anschließendem Kompilieren erzeugt werden können. Die app.js beinhaltet keine Information, die nicht über das GIT-Repo und über die Paketfiles erstellt werden könnte. Dennoch habe ich die kompilierten Assets jetzt in mein GIT-Repo mit aufgenommen. Vorteil: Ich benötige keine Arbeitsspeicher-Reserven auf dem eigentlichen Webserver und ich kann das kompilierte Ergebnis bevor ich die neue Version am produktiven Webserver einsetze vorher noch kontrollieren. Sollte etwas nicht funktionieren, kann ich die Seite zudem schneller auf einen alten GIT-Commit zurückstellen.

Als GIT-Repository verwende ich Gitea - Schlanker und schneller GIT-Server

Mein Docker-Setup schaut im Detail so aus: Docker-Webserver Setup für Laravel - Konfig im Detail

positive Bewertung({{pro_count}})
Beitrag bewerten:
{{percentage}} % positiv
negative Bewertung({{con_count}})

DANKE für deine Bewertung!



Fragen / Kommentare


Wir verwenden Cookies, um Inhalte und Anzeigen zu personalisieren, Funktionen für soziale Medien anbieten zu können und die Zugriffe auf unsere Website zu analysieren. Außerdem geben wir Informationen zu Ihrer Nutzung unserer Website an unsere Partner für soziale Medien, Werbung und Analysen weiter. Details anzeigen.