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!


Top-Artikel in diesem Bereich

Preview Docker Mailserver selbst betreiben | ein Erfahrungsbericht

Docker Mailserver selbst betreiben | ein Erfahrungsbericht

geändert: 28.04.2022 von Bernhard (Erstveröffentlichung: 30.03.2021)

Mit Hilfe eines geeigneten Docker-Images ist es relativ einfach einen Mailserver selbst zu betreiben. Ursprünglich habe ich den integrierten Mailserver des Hosteurope 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 Email-Clie... ... weiterlesen

Preview nginx-LetsEncrypt Reverse Proxy in der Praxis

nginx-LetsEncrypt Reverse Proxy in der Praxis

geändert: 13.10.2021 von Bernhard (Erstveröffentlichung: 27.03.2021)

Um auf einem Server mehrere Webservices mit entsprechenden SSL-Zertifikaten zu betreiben, bietet sich der Letsencrypt-nginx-proxy-companion an. Bei dem Setup handelt es sich um einen Reverse-Proxy, welcher SSL-Offloading und die Zertifikats-Verwaltung übernimmt. Ist der Proxy einmal gestartet, kümmert sich der Companion um die Bereitstellung mehrerer Webseiten über eine gemeinsame IP und um dessen Zertifikatsverwaltung: Für das Ausstellen der Zertifikate für neue Container und das Erneuern diese... ... weiterlesen

Preview Schlanker und schneller GIT-Server, ähnlich GitHub (Docker)

Schlanker und schneller GIT-Server, ähnlich GitHub (Docker)

geändert: 07.04.2021 von Bernhard (Erstveröffentlichung: 09.04.2021)

Nachdem GitLab relativ viel Arbeitsspeicher und CPU benötigt und zudem auf meinem NAS relativ langsam ist, habe ich GitLab mit Gitea ersetzt. Gitea bietet eine ähnliche Weboberfläche wie GitHub, ist wesentlich sparsamer als GitLab und reagiert flinker. Auch wenn der Funktionsumfang nicht so hoch wie bei GitLab ist, reicht dieser für die meisten Verwendungszwecke vollkommen aus.  ... weiterlesen


Fragen / Kommentare


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