Mit der MOMENTAUFNAHME in der privaten NPM wie in Maven
Ich habe ein sehr einfaches setup:
Lib A Lib B
publish 1.0.0-SNAPSHOT -> Private Registry -> npm install
Beachten Sie, dass A und B auf unterschiedlichen Rechnern (denke jenkins-cluster!).
Während zwei releases der Versionen am Ende mit "-SNAPSHOT" und sind aktualisiert auf jedem build (). Natürlich hing Bibliotheken (B,...) sollte immer die neueste version aus der registry.
Problem ist, dass NPM nicht refetch die gleiche version.
Lib A Lib B
small change, rebuild:
publish 1.0.0-SNAPSHOT -> Private Registry !! npm install -f
npm cache clean
!! npm install -f
rm -rf node_modules
-> npm install
Idee: Deaktivieren Sie den cache für NPM Global
Das wäre okay, weil wir eine lokale npm-proxy:
"~/.npmrc":
force=true
cache-min=0
cache-max=0
Aber dies bedeutet nicht Arbeit! Nur das entfernen der node_modules-Verzeichnis funktioniert. Dies ist keine brauchbare Lösung, weil die Entwickler, sollten Sie nicht verwenden müssen "rm -rf node_modules && npm install".
Mit maven dieses setup funktioniert, weil wir die ""- U" option. Diese Kräfte maven, um zu überprüfen, ob ein aktualisierter SNAPSHOT-version ist verfügbar. NPM versteht nicht das Konzept der SNAPSHOT aber wenigstens Fragen sollte die Registrierung jedes mal.
npm version 2.12.0
Private Registrierung: Sonatype Nexus™ 2.10.0-02
- Hast du eine Lösung finden? Ich bin gespannt, das Konzept der snapshots mit npm auf Sontatype Nexus.
- Grundsätzlich ist es nicht vorgesehen, dass die snapshot-version ist, wie es ist, wenn Sie mit Maven. Wenn Sie brauchen, um die Arbeit mit den "neuesten" version zum Beispiel bei starker Entwicklung 😉 dann können Sie mit npm link finden Sie link.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Idee 1
Können Sie die Art imitieren dieses Verhalten, wenn Sie "missbrauchen" die pre-release-Teil der SemVer. Ich habe mit der folgenden Strategie erfolgreich:
Veröffentlichen Sie Ihre Module mit
-SNAPSHOT
aber anfügen einer erhöhten Anzahl jedes mal, Sie veröffentlichen (-SNAPSHOT.#
oder-SNAPSHOT-#
).Zum Beispiel:
"x.x.x-SNAPSHOT.1"
den ersten veröffentlichen, dann"x.x.x-SNAPSHOT.2"
die zweite zu veröffentlichen und so weiter.Stellen Sie sicher, dass Sie ein konsistentes Muster. So, zum Beispiel, wenn Sie verwendet dots, stick mit Punkten, oder wenn Sie verwendet Bindestriche, stick mit Bindestrichen.
Für abhängige Module, Sie brauchen nur zu erklären, Ihre version als
und NPM holt die neueste version.
Alle diese Werke wegen 2 Gründen
1.0.0-SNAPSHOT < 1.0.0-SNAPSHOT.1 < 1.0.0-SNAPSHOT.2 < 1.0.0-SNAPSHOT.3
...VORBEHALT: dies funktioniert nur für patch-Versionen. Technisch 1.2.x-SNAPSHOT ist größer als 1.1.x-SNAPSHOT, jedoch SemVer nicht berücksichtigen Sie dies bei der Verwendung von pre-releases.
Aus der docs:
Idee 2
Wieder, dies ist ein weiterer "hack". Wenn Sie ok sind, mit dem Verlust der patch Teil SemVer, können Sie veröffentlichen Ihre Versionen als
x.x.<unix epoch ms>
.Der unix-Epoche immer mehr (zumindest bis 2038 für 32 bit) und jedes mal, wenn Sie veröffentlichen, werden Sie immer veröffentlichen eine größere version.