Ü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.lockund package-lock.jsonjeweils dort notwendig , wo es sicher zu machen, immer diese Lock - Dateien zu begehen.
Sie sollten also immer mindestens einen von yarn.lockoderpackage-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.jsonSie 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.lockoder package-lock.jsonbeides 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.lockund package-lock.jsonimmer synchron zu bleiben.
Update: Yarn hat jetzt einen importBefehl eingeführt, der eine yarn.lockDatei aus einer package-lock.jsonDatei 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.