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!

Veröffentlichung: 08.06.2021 von Bernhard 🔔


Top-Artikel in diesem Bereich


Docker Mailserver selbst betreiben | ein Erfahrungsbericht
Mithilfe eines geeigneten Docker-Images ist es relativ einfach einen Mailserver selbst zu betreiben. Ursprünglich habe ich den integrierten Mailserver des Host Europe vServers (Plesk) verwendet und bin bei der Suche nach einem Ersatz auf einen sehr einfachen Docker-Container gestoßen. Der schlanke Container liefert einen Mailserver ohne grafische Verwaltungsoberfläche, kann aber mit wenigen einfachen Befehlen verwaltet werden. Für das Senden und Empfangen der Mails kann ein beliebiger E-Mail-Cli...

sichere https Verbindung: Traefik Reverse Proxy + Let´s Encrypt
Für nahezu alle bekannten Websysteme gibt es fertige Docker-Container, bzw. können diese relativ einfach selbst erstellt oder bestehende Container angepasst werden. Als Docker-Container können die Webservices sehr einfacher installiert und betrieben werden. Wer einen Webservice über das Internet veröffentlicht, sollte dafür heute unbedingt eine verschlüsselte Verbindung (SSL) anbieten. Um den Zugriff auf einen oder mehrere Container zu regeln, kann ein Reverse-Proxy mit kostenlosen Let’s Encrypt...

Nextcloud Server Docker | Einrichtung +https: Let’s Encrypt [ssl]
Um mit meinem NAS Kontakte, Termine und Fotos zu synchronisieren, habe ich Nextcloud getestet und damit anderen Cloudanbietern für meine privaten Daten ein Stück weit den Rücken gekehrt. Dank Docker ist die Installation einfacher und flexibler denn je und ermöglicht es, Nextcloud auf einer beinahe beliebigen Hardware zu betreiben.

Fragen / Kommentare


Durch die weitere Nutzung der Seite stimmst du der Verwendung von Cookies zu Mehr Details