web-dev-qa-db-fra.com

npm: Pourquoi la version "0.1" est-elle invalide?

Je devais changer la version de mon application npm de 0.1 à 0.0.1 pour que npm ne le fasse pas.

$ 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

Pour être complet, voici le json qui fonctionne

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

la version était "0.1" quand l'erreur était commise.

S'agit-il d'un concept de gestion de version compatible API/ABI nécessitant 3 séries de numéros de version? Pourquoi le message d'erreur n'est-il pas plus convivial w.r.t. cette?

82
Steven Lu

Oui, cela est nécessaire pour versioning sémantique , qui est le schéma de gestion de version utilisé par les packages npm. Voici l'extrait de npm help json :

La version doit être analysable par node-semver , qui est fourni avec npm en tant que dépendance. (npm install semver l'utiliser vous-même.)

Voici comment l'implémentation semver de npm diffère de celle de semver.org:

  • Les versions peuvent commencer par "v"
  • Un élément numérique séparé de la version principale à trois chiffres par un trait d'union sera interprété comme un numéro de "build" et augmentera la version. Toutefois, si la balise n'est pas un nombre séparé par un trait d'union, elle est traitée comme une balise de pré-publication et est inférieure à la version sans balise. Alors, 0.1.2-7 > 0.1.2-7-beta > 0.1.2-6 > 0.1.2 > 0.1.2beta
95
Michelle Tilley

Donc oui, la réponse courte est "Vous devez utiliser le versioning sémantique"

Mais le raisonnement derrière cela est de fournir une version de paquet uniforme et raisonnable à tous les utilisateurs de npm. Lorsque vous obtenez le numéro de version d'un paquet, vous avez certains niveau de confiance que l'auteur comprend semver et qu'il l'utilise correctement.

4
user633183

Réponse simple:

Si vous voulez utiliser la version du paquet, disons '0.1', mais continue de recevoir l'avertissement Invalid version: "0.1", alors changez-le simplement en '0.1.0'. Terminé.

1