npm: ¿Por qué una versión "0.1" no es válida?

92

Tuve que cambiar la versión de mi aplicación npm de 0.1 a 0.0.1 para que npm no hiciera esto.

$ 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

Para completar, aquí está el json de trabajo

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

la versión solía ser "0.1" cuando cometió el error.

¿Es este algún tipo de concepto de control de versiones de compatibilidad API / ABI que requiere 3 conjuntos de números de versión? ¿Por qué el mensaje de error no es más amigable con esto?

Steven Lu
fuente
1
eche un vistazo al npm versioncomando. Le permite incrementar la versión semántica según los niveles mayor, menor o de parche. Ejemplos: npm version major, npm version minor,npm version patch
Noah

Respuestas:

110

Sí, esto es necesario para el control de versiones semántico , que es el esquema de control de versiones que utilizan los paquetes npm. Aquí está el fragmento denpm help json :

La versión debe ser analizable por node-semver , que se incluye con npm como dependencia. ( npm install semverusarlo usted mismo)

Así es como la implementación semver de npm se desvía de lo que hay en semver.org:

  • Las versiones pueden comenzar con "v"
  • Un elemento numérico separado de la versión principal de tres números por un guión se interpretará como un número de "compilación" y aumentará la versión. Pero, si la etiqueta no es un número separado por un guión, entonces se trata como una etiqueta previa al lanzamiento y es menor que la versión sin etiqueta. Entonces,0.1.2-7 > 0.1.2-7-beta > 0.1.2-6 > 0.1.2 > 0.1.2beta
Michelle Tilley
fuente
37
frio. El error debería indicar algo como "npm requiere control de versiones semántico".
Steven Lu
++ por señalar el manejo preferido de liberaciones etiquetadas
Benxamin
@StevenLu Creo que esto también debería mencionar la versión de semver que usa, actualmente es 2.0.0.
Deoxyseia
12

Respuesta simple: use 0.1.0

0.1 no trabajará

¡Feliz codificación!

Stanislau Baranouski
fuente
4

Entonces, sí, la respuesta corta es "Necesitas usar versiones semánticas".

Pero el razonamiento detrás de esto es proporcionar una versión de paquete uniforme y sensata a todos los usuarios de npm. Cuando obtiene un número de versión de un paquete, tiene cierto nivel de confianza en que el autor comprende semver y lo está empleando correctamente.

Gracias
fuente