npm: waarom is een versie “0.1” ongeldig?

Ik moest de versie van mijn npm-app wijzigen van 0.1 in 0.0.1 om te voorkomen dat npm dit deed.

$ 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

Voor de volledigheid is hier de werkende json

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

versie was “0.1” toen deze de fout maakte.

Is dit een soort API/ABI-compatibiliteitsversieconcept waarvoor 3 sets versienummers nodig zijn? Waarom is de foutmelding niet vriendelijker w.r.t. dit?


Antwoord 1, autoriteit 100%

Ja, dit is vereist voor semantische versiebeheer, het versieschema dat npm-pakketten gebruiken. Hier is het fragment van npm help json:

Versie moet kunnen worden geparseerd door node-semver, die is gebundeld met npm als afhankelijkheid. (npm install semverom het zelf te gebruiken.)

Zo wijkt de semver-implementatie van npm af van wat er op semver.org staat:

  • Versies kunnen beginnen met “v”
  • Een numeriek item dat door een koppelteken van de hoofdversie met drie cijfers wordt gescheiden, wordt geïnterpreteerd als een “build”-nummer en verhoogt de versie. Maar als de tag geen getal is, gescheiden door een koppelteken, wordt deze behandeld als een pre-releasetag en is deze kleiner dan de versie zonder tag. Dus, 0.1.2-7 > 0.1.2-7-beta > 0.1.2-6 > 0.1.2 > 0.1.2beta

Antwoord 2, autoriteit 18%

Eenvoudig antwoord – gebruik 0.1.0

0.1werkt niet

Veel plezier met coderen!


Antwoord 3, autoriteit 4%

Dus ja, het korte antwoord is: “Je moet semantische versiebeheer gebruiken”

Maar de redenering daarachter is om een ​​verstandige, uniforme pakketversie aan te bieden aan alle gebruikers van npm. Als je een versienummer van een pakket krijgt, heb je enigszinsvertrouwen dat de auteur semver begrijpt en op de juiste manier gebruikt.

Other episodes