Stabile Builds und korrekte Abhängigkeiten

Ein Tweet von Ilker hat mich heute schwer getroffen. Er schieb:

Recht hat er damit, das war mir schon lange davor klar. So habe ich es mir sehr schnell angewöhnt, Abhängigkeiten mit ins Repository zu packen. Dies bringt den Vorteil mit sich, dass nach einem Pull alles Notwendige vorhanden ist, und sofort durchgestartet werden kann. Was für die Entwicklung gilt, gilt auch für das Build-System. Lokales Repository aktualisieren, alles da. Oftmals müssen nach einem Pull erst Abhängigkeiten aktualisiert oder gar erst herunter geladen werden. Geht dies schief, geht auch der Build schief. Keine Situation die man haben möchte. Ein weiterer Vorteil besteht darin, dass mit jeder Revision gearbeitet werden kann, da die Abhängigkeiten in den passenden Versionen dazu vorhanden sind. Ein Nachladen ist oftmals nicht möglich, da die notwendige Version online eventuell nicht mehr zur Verfügung steht.

Getroffen hat mich der Tweet, als mir dann meine Node.js Projekte eingefallen sind, die ich so auf GitHub hoste. Diese enthalten alle nur die package.json mit der Definition der Abhängigkeiten. Das Verzeichnis node_modules wurde nicht ins Repository eingebunden. Aus einem mir nicht begreiflichen Grund habe ich mein Verhalten bei Node.js Projekten geändert. Als ob diese anders zu behandeln wären.

Aus Interesse habe ich mich dann durch zahlreiche einschlägige Repositories auf GitHub geklickt. Kaum jemand legt Abhängigkeiten im Repository ab. Warum kann ich mir nicht erklären. Vermutlich schauen sich jedoch viele den Aufbau von bestehenden Repositories ab und werden dies somit auch nicht tun. Zudem ist eine Installation mit NPM (durch ein etwaiges Build-System oder einem Entwickler) somit Pflicht. Und genau das sollte es nicht sein.

Lege Abhängigkeiten immer im Repository ab. Damit enthält jede Revision alles Notwendige um lauffähig zu sein. Weder das Build-System noch andere Entwickler müssen sich um das Installieren oder Aktualisieren von Abhängigkeiten kümmern. Alles und jeder kann sofort Produktiv sein.

Think about it.

Veröffentlicht von Norbert Eder

Ich bin ein leidenschaftlicher Softwareentwickler. Mein Wissen und meine Gedanken teile ich nicht nur hier im Blog, sondern auch in Fachartikeln und Büchern.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Cookie-Einstellungen
Auf dieser Website werden Cookie verwendet. Diese werden für den Betrieb der Website benötigt oder helfen uns dabei, die Website zu verbessern.
Alle Cookies zulassen
Auswahl speichern
Individuelle Einstellungen
Individuelle Einstellungen
Dies ist eine Übersicht aller Cookies, die auf der Website verwendet werden. Sie haben die Möglichkeit, individuelle Cookie-Einstellungen vorzunehmen. Geben Sie einzelnen Cookies oder ganzen Gruppen Ihre Einwilligung. Essentielle Cookies lassen sich nicht deaktivieren.
Speichern
Abbrechen
Essenziell (1)
Essenzielle Cookies werden für die grundlegende Funktionalität der Website benötigt.
Cookies anzeigen