2013-06-19 14 views
27

Bower docs sagtWarum Bower-Komponenten einchecken?

N.B. Wenn Sie kein Paket erstellen, das von anderen verwendet werden soll (z. B. wenn Sie eine Webanwendung erstellen), sollten Sie installierte Pakete immer in der Quellcodeverwaltung überprüfen.

Hat jemand eine gute Antwort auf warum?

Wenn ich ein Web-App zu machen will ich nicht meine Repo überladen mit Updates in der Version der Bibliothek X.

Ich mag nur bower.json Abhängigkeiten aktualisieren. Ich würde denken, dass die meisten Projekte einen Build-Schritt oder ähnliches haben werden, zum Beispiel mit Grunt. Der Build-Schritt würde sicherstellen, dass bower install/update vor dem Erstellen aufgerufen wird, so dass diese Dateien für concat/minification usw. vorhanden sind. Oder sogar eine einfache Kopie in einen Ordner dist.

Fehle ich etwas?

Antwort

28

Sie können Ihre Abhängigkeiten sperren, um zu verhindern, dass Ihre App durch eine schlechte Abhängigkeit beschädigt wird oder dass die Remote-Bereitstellung nicht aktiv ist. Dies kann passieren, obwohl Sie einen Build-Schritt haben, da Sie wahrscheinlich nicht jeden Build gründlich testen, und automatisierte Tests nicht alles erfassen, vor allem nicht visuelle Regressionen. Auch mehrere Entwickler können unterschiedliche Versionen einer Abhängigkeit haben. Wenn Sie die Abhängigkeiten festgeschrieben haben, stellen Sie sicher, dass alle auf derselben Version bleiben. Ich finde auch, dass das Anzeigen des Diff ein guter Weg ist, sicherzustellen, dass in dem Abhängigkeitsbaum nichts böswilliges eingeführt wird.

In der Node-Welt npm shrinkwrap teilweise löst dies, aber noch keine Prüfsummenabgleich. Bower haben derzeit eine offene , um das gleiche zu implementieren.

Sie können mehr über sie in diesem Blog-Eintrag lesen: Checking in front-end dependencies

+0

Ja ich denke, ich dachte, ich könnte 1.2.3 anstelle von ~ 1.2.3 oder ähnlich verwenden. (Oder sogar das ist in Ordnung, wenn ich der Bibliothek traue, sverver zu benutzen) Aber ich denke, wenn Bibliothek X in seiner bower.json eine Abhängigkeit zur Bibliothek Y hat und> = 2.3.4 oder ähnlich benutzt, dann bin ich in Schwierigkeiten. Freue mich auf eine Shrinkwrap-Funktion. –

+3

Ja, und das Sperren von Versionen, sogar tief, ist nicht genug, da Tags und Versionen überschrieben werden können. Das ist der Grund, warum 'npm shrinkwrap' die Prüfsummenabgleichung von Abstufungen benötigt, und das ist es, was wir von Anfang an in Bower-Schrumpffolie wollen. –

+0

Dies ist die gleiche Argumentation wie für die Spieleentwicklung. Sie aktualisieren die Pakete nicht ständig, daher ist es sinnvoll, sie bei einer bestimmten Version einzufrieren oder zu verkleinern, um Verzögerungen bei der Bereitstellung oder Erstellung zu vermeiden. –

0

Diese Antwort ist nicht technisch, sondern ein praktischer Grund in Bower Komponenten nicht zu überprüfen.

Ich würde eher boomer Pakete in bower.json gesperrt werden, anstatt diese Pakete einchecken. Vertrauen Sie mir, Sie können nicht Tausende von Dateien herunterladen und auf einem Computer entpacken. Computer mit langsamer Leistung haben ein Problem mit sehr großen und tiefen Dateipfaden. Und in dieser Welt des Internets glaube ich, dass es immer einfach ist, die Pakete herunterzuladen, anstatt sie herumzutragen.

Es ist nur eine Frage der Präferenz. Es kommt alles aus Erfahrung. Ich habe ein Projekt mit Bower-Komponenten auf Github eingecheckt und es ist schlimmer beim Hoch- und Herunterladen. Ich habe es durch einen relativ neuen Mac gemacht.