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


90

J'ai dû 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!     <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

Pour être complet, voici le json fonctionnel

$ 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 il a fait l'erreur.

S'agit-il d'une sorte de concept de version de compatibilité API / ABI nécessitant 3 ensembles de numéros de version? Pourquoi le message d'erreur n'est-il pas plus convivial?


1
jetez un œil à la npm versioncommande. Il vous permet d'incrémenter la version sémantique en fonction des niveaux majeurs, mineurs ou correctifs. Exemples: npm version major, npm version minor,npm version patch
Noah

Réponses:


107

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

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

Voici comment l'implémentation semver de npm s'écarte de ce qui est sur 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. Mais, si la balise n'est pas un nombre séparé par un trait d'union, elle est alors traitée comme une balise de pré-version 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

37
cool. L'erreur devrait juste dire quelque chose comme "npm nécessite un contrôle de version sémantique".
Steven Lu

++ pour noter la gestion préférée des versions taguées
Benxamin

@StevenLu Je pense que cela devrait également mentionner la version de semver qui utilise, actuellement 2.0.0.
Deoxyseia


4

Donc oui, la réponse courte est "Vous devez utiliser le contrôle de version sémantique"

Mais le raisonnement derrière cela est de fournir une version de package raisonnable et uniforme à tous les utilisateurs de npm. Lorsque vous obtenez un numéro de version d'un package, vous êtes certain que l'auteur comprend semver et l'emploie correctement.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.