npm: Warum ist eine Version "0.1" ungültig?


90

Ich musste die Version meiner npm-App von 0.1 auf 0.0.1 ändern, damit npm dies nicht tut.

$ npm install
npm ERR! install Couldn't read dependencies
npm ERR! Error: invalid version: 0.1
npm ERR!     at validVersion (/usr/local/Cellar/node/0.10.5/lib/node_modules/npm/node_modul
es/read-package-json/read-json.js:571:40)
npm ERR!     at final (/usr/local/Cellar/node/0.10.5/lib/node_modules/npm/node_modules/read
-package-json/read-json.js:323:23)
npm ERR!     at /usr/local/Cellar/node/0.10.5/lib/node_modules/npm/node_modules/read-packag
e-json/read-json.js:139:33
npm ERR!     at cb (/usr/local/Cellar/node/0.10.5/lib/node_modules/npm/node_modules/slide/l
ib/async-map.js:48:11)
npm ERR!     at /usr/local/Cellar/node/0.10.5/lib/node_modules/npm/node_modules/read-packag
e-json/read-json.js:301:48
npm ERR!     at fs.js:207:20
npm ERR!     at Object.oncomplete (fs.js:107:15)
npm ERR! If you need help, you may report this log at:
npm ERR!     <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR!     <npm-@googlegroups.com>

npm ERR! System Darwin 12.3.0
npm ERR! command "/usr/local/Cellar/node/0.10.5/bin/node" "/usr/local/bin/npm" "install"
npm ERR! cwd /Users/lust/Documents/ply/dev-server
npm ERR! node -v v0.10.5
npm ERR! npm -v 1.2.18
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR!     /Users/lust/Documents/ply/dev-server/npm-debug.log
npm ERR! not ok code 0

Der Vollständigkeit halber hier der Arbeits-Json

$ cat package.json
{
    "name": "ply",
    "description": "ply server for local dev testing deployments",
    "version": "0.0.1",
    "private": true,
    "dependencies": {
        "express": "3.x"
    }
} 

Die Version war "0.1", als der Fehler auftrat.

Ist dies eine Art API / ABI-Kompatibilitäts-Versionskonzept, das 3 Sätze von Versionsnummern erfordert? Warum ist die Fehlermeldung dafür nicht freundlicher?


1
Schauen Sie sich den npm versionBefehl an. Sie können die semantische Version basierend auf den Haupt-, Neben- oder Patch-Ebenen erhöhen. Beispiele: npm version major, npm version minor,npm version patch
Noah

Antworten:


107

Ja, dies ist für die semantische Versionierung erforderlich. Dies ist das Versionsschema , das npm-Pakete verwenden. Hier ist der Ausschnitt ausnpm help json :

Die Version muss vom Node-Semver analysiert werden können , der als Abhängigkeit mit npm gebündelt ist. ( npm install semverum es selbst zu benutzen.)

So weicht die semver-Implementierung von npm von der auf semver.org ab:

  • Versionen können mit "v" beginnen
  • Ein numerisches Element, das durch einen Bindestrich von der dreistelligen Hauptversion getrennt ist, wird als "Build" -Nummer interpretiert und erhöht die Version. Wenn das Tag jedoch keine durch einen Bindestrich getrennte Zahl ist, wird es als Pre-Release-Tag behandelt und ist kleiner als die Version ohne Tag. So,0.1.2-7 > 0.1.2-7-beta > 0.1.2-6 > 0.1.2 > 0.1.2beta

37
cool. Der Fehler sollte nur etwas zu dem Effekt von "npm erfordert semantische Versionierung" sagen.
Steven Lu

++ für die Feststellung der bevorzugten Behandlung von getaggten Veröffentlichungen
Benxamin

@StevenLu Ich denke, dies sollte auch die Version von Semver erwähnen, die derzeit 2.0.0 verwendet.
Deoxyseia


4

Ja, die kurze Antwort lautet "Sie müssen die semantische Versionierung verwenden".

Der Grund dafür ist jedoch, allen Benutzern von npm eine vernünftige, einheitliche Paketversion zur Verfügung zu stellen. Wenn eine Versionsnummer eines Pakets bekommen, haben Sie eine gewisse Maß an Vertrauen , dass der Autor semver versteht und es ordnungsgemäß verwendet wird .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.