2013-06-02 15 views
60

Musiałem zmienić wersję mojej aplikacji npm z 0.1 na 0.0.1, aby npm tego nie zrobił.npm: Dlaczego wersja "0.1" jest nieprawidłowa?

$ 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 

Dla kompletności oto json roboczego

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

wersja kiedyś "0.1", kiedy to uczynił błąd.

Czy jest to coś w rodzaju koncepcji zgodności kompatybilności API/ABI wymagającej 3 zestawów numerów wersji? Dlaczego komunikat o błędzie nie jest bardziej przyjazny w.r.t. to?

+0

spójrz na komendę 'npm version'. Pozwala na zwiększenie wersji semantycznej w oparciu o poziomy główne, drobne lub łatki. Przykłady: 'npm version major',' npm version minor', ​​'patch wersji npm' – Noah

Odpowiedz

73

Tak, jest to wymagane dla semantic versioning, który jest schematem wersjonowania używanym pakietom npm. Oto the snippet from npm help json:

wersja musi być parsowalnym przez node-semver, który jest w zestawie z KMP jako zależność. (npm install semver go używać samodzielnie.)

Oto jak realizacja semver NPM odbiega od tego, co znajduje się na semver.org:

  • Wersje może zaczynać się od „v”
  • pozycja numeryczna oddzielona od głównej trzy- Numer wersji przez łącznik będzie interpretowany jako numer "kompilacji" i zwiększy wersję. Jeśli jednak tag nie jest liczbą oddzieloną łącznikiem, jest traktowany jako tag przed wydaniem i jest mniejszy niż wersja bez tagu. Więc 0.1.2-7 > 0.1.2-7-beta > 0.1.2-6 > 0.1.2 > 0.1.2beta
+25

fajne. Błąd powinien po prostu powiedzieć coś na temat efektu "npm wymaga semantycznego wersjonowania". –

+2

otwórz numer na stronie github npm https://github.com/isaacs/npm – Noah

+0

++ za notowanie preferowanej obsługi tagowanych wydań – Benxamin

4

więc tak, Krótka odpowiedź brzmi „Trzeba użyć semantycznej wersjonowanie”

Ale Rozumowanie to zapewnić rozsądny, jednolitą wersję pakietu do wszystkich użytkowników KMP. Podczas pobierania numeru wersji pakietu masz pewien poziom pewności, że autor rozumie kod semver i stosuje go poprawnie.

Powiązane problemy