Übernehmen Sie im Allgemeinen immer Abhängigkeits-Sperrdateien
Wie abgedeckt anderswo, Abhängigkeit Lock - Dateien, die von vielen Paket - Management - Systemen unterstützt werden (zB:
Komponist und Bündler ), sollte die Code - Basis in End-of-Chain - Projekten verpflichtet werden - so dass jedes einzelne versuchen, dieses Projekt auszuführen tut also mit genau dem getesteten Satz von Abhängigkeiten.
Es ist weniger klar, ob Sperrdateien immer in Paketen festgeschrieben werden sollen, die in anderen Projekten enthalten sein sollen (wo lockerere Abhängigkeiten wünschenswert sind). Doch sowohl Garn und NPM (wie durch @Cyrille abgedeckt) intelligent ignorieren yarn.lock
und package-lock.json
jeweils dort notwendig , wo es sicher zu machen, immer diese Lock - Dateien zu begehen.
Sie sollten also immer mindestens einen von yarn.lock
oderpackage-lock.json
abhängig davon verwenden, welchen Paketmanager Sie verwenden.
Sollten Sie sowohl yarn.lock als auch package-lock.json festschreiben?
Derzeit haben wir zwei verschiedene Paket - Management - Systeme, die beide installieren den gleichen Satz von Abhängigkeiten aus package.json
, aber die erzeugen und lesen aus zwei verschiedenen Lock - Dateien. NPM 5 erzeugt package-lock.json
, während Garn erzeugt yarn.lock
.
Wenn Sie ein Commit durchführen, bauen package-lock.json
Sie die Unterstützung für Personen ein, die Ihre Abhängigkeiten mit NPM 5 installieren. Wenn Sie ein Commit durchführen yarn.lock
, bauen Sie die Unterstützung für Personen ein, die Abhängigkeiten mit Yarn installieren.
Ob Sie sich für ein Commit yarn.lock
oder package-lock.json
beides entscheiden, hängt davon ab, ob diejenigen, die sich in Ihrem Projekt entwickeln, nur Yarn oder NPM 5 oder beides verwenden. Wenn Ihr Projekt Open Source ist, ist es wahrscheinlich das Community-freundlichste, beides zu verpflichten und einen automatisierten Prozess zu haben, um sicherzustellen yarn.lock
und package-lock.json
immer synchron zu bleiben.
Update: Yarn hat jetzt einen import
Befehl eingeführt, der eine yarn.lock
Datei aus einer package-lock.json
Datei generiert . Dies kann nützlich sein, um die beiden Dateien synchron zu halten. (Danke @weakish)
Dieses Thema wurde im Rahmen des Garnprojekts ausführlich erörtert in:
Beide sind jetzt geschlossen.