2016-03-30 15 views
1

In meinen JavaScript-Anwendungen kann ich einige Dutzend Abhängigkeiten in meiner package.json Datei deklarieren.Verwenden Sie die neueste Hauptversion

Es würde eine Weile dauern, um durch jede dieser Abhängigkeiten zu gehen und zu sehen, auf welcher Version sie sich befinden.

Ich möchte nur sagen: Verwenden Sie die neueste Hauptversion, aber nicht die blutigste Kante.

Als ein Beispiel, mit einem Tool wie Git ich normalerweise nicht kümmern über Änderungen auf der Patch-Ebene, aber wenn eine neue Hauptversion herauskommt, werde ich es wollen.

Gibt es ein ähnliches Konzept bei der Angabe der Version eines NPM-Moduls?

+0

Die "bleeding edge" ist in der Regel eine Reihe von Bug-Fixes Sie wahrscheinlich haben wollen. – ceejayoz

+0

@ceejayoz Dies ist wahrscheinlich nur meine Unkenntnis der Landschaft, aber wie ist das anders als andere Tools wie Quellcode-Tools oder Browser, wo ich nicht in der Regel Dinge (oder wollen) Dinge auf der Höhe der Zeit? –

+0

Ein anderes Beispiel ist ein Modul wie 'grunt'. Ich will nur eine stabile Version, nicht die blutende Kante, die (ich nehme an) noch nicht so stabil ist? –

Antwort

2

NPM-Pakete (theoretisch) SemVer verwenden.

In SemVer erhalten Pakete eine Versionsnummer von X.Y.Z.

Z zeigt Fehlerkorrekturen an. Y zeigt neue Funktionen an, ohne bestehende zu ändern. X gibt eine Hauptversion an, die die Abwärtskompatibilität bricht.

npm install --save <package> Dadurch wird in Ihrem package.json wie ^2.3.9 in einer Versionszeichenfolge führen, die „alles in dem 2.* Bereich größer als oder gleich 2.3.9“ bedeutet. Dies bedeutet, dass Sie Fehlerkorrekturen und neue Funktionen erhalten, die Sie nicht unterbrechen müssen, aber Sie werden nicht unerwartet auf eine Version 3.0.0 aktualisiert, die Ihre Anwendung beschädigt.

Hinweis: Ich sage "theoretisch", weil nicht jeder am Ideal von SemVer festhält. Sie können eine 2.3.9 -> 2.3.10 Aktualisierung finden, die Sachen manchmal bricht. Tests sind hier praktisch.

1

Mit npm i -S <pkg> sollte normalerweise das Richtige tun.

ein paar Einschränkungen:

  • Die oben geht davon aus, wenn Sie eine Laufzeitabhängigkeit <pkg> einnehmen. In einem Entwicklerwerkzeug Installation (wie grunt) verwenden -D oder -G anstelle von -S.

  • Semantic versioning rule 9 sagt, dass Verleger KÖNNEN Vorabversionen mit einem Suffix wie -beta identifizieren. Npm hängt davon ab, wenn Paket-Verleger FAILS es tun, können Sie eine Abhängigkeit von einem Vorabversionspaket nehmen, ohne es zu kennen. Anspruchsvolle npm-Publisher sollten es besser wissen, und erfahrene npm-Konsumenten sollten die Dokumentation prüfen.

  • Eine Hauptversion ist '' zeigt an, dass das Paket noch in der anfänglichen Entwicklung ist, und das Paket sollte nicht als stabil angesehen werden. (Semantic versioning rule 4.

    )
  • Betrachten npm dist-tag ls <pkg> zu sehen, ob es ein paketspezifische Tag ist, dass Ihre Absicht besser als latest identifiziert. Wenn ja, verwenden Sie npm I -S <pkg>@<tag>, um dieses Tag zu verfolgen.

Sie immer npm outdated verwenden können, um zu überprüfen, ob Sie direkt auf ein Paket mit einer neuen Hauptversion abhängigen könnte in Erwägung ziehen, ein Upgrade. Es ist By-Design, dass wichtige Versionsupgrades nicht automatisch erfolgen.

+0

Das 'npm' Paket selbst verwendet' dist-tag's Tags mit gutem Effekt, um diesen Typ zu sehen ** 'npm dist-tag ls npm' **. Wenn dies nicht funktioniert, upgraden Sie auf den 'neuesten '(stable) Build von npm, indem Sie **' npm i -G npm' ** eingeben. –

Verwandte Themen