it-swarm.com.de

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

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!     <[email protected]>

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 funktionierende Json

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

version war "0.1", als der Fehler auftrat.

Ist dies eine Art API/ABI-Kompatibilitäts-Versionskonzept, das drei Sätze von Versionsnummern erfordert? Warum ist die Fehlermeldung nicht mehr freundlich w.r.t. Dies?

82
Steven Lu

Ja, dies ist erforderlich für semantische Versionierung , das Versionsschema, das npm-Pakete verwenden. Hier ist das Snippet von npm help json :

Die Version muss mit Node-Semver syntaktisch analysierbar sein, das mit npm als Abhängigkeit gebündelt ist. (npm install semver um es selbst zu benutzen.)

So unterscheidet sich die Implementierung von npm in semver von der auf semver.org:

  • Versionen können mit "v" beginnen
  • Ein numerisches Element, das durch einen Bindestrich von der Hauptversion mit drei Ziffern getrennt ist, wird als Build-Nummer interpretiert und die Version erhöht. 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
95
Michelle Tilley

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 Sie eine Versionsnummer eines Pakets erhalten, haben Sie einige das Vertrauen, dass der Autor Semver versteht und es richtig einsetzt.

4
user633183

Einfache antwort:

Wenn Sie die Paketversion verwenden möchten, sagen wir '0.1', aber immer die Warnung Invalid version: "0.1", dann ändere es einfach in '0.1.0'. Getan.