2013-06-02 2 views
60

Мне пришлось изменить версию моего приложения npm с 0.1 до 0.0.1, чтобы npm не делал этого.npm: Почему версия «0.1» недействительна?

$ 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 

Для полноты здесь рабочий JSON

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

версия используется как «0,1», когда он сделал ошибку.

Это какая-то концепция совместимости версий API/ABI, требующая 3-х наборов номеров версий? Почему сообщение об ошибке не более дружелюбное w.r.t. это?

+0

посмотрите команду 'npm version'. Это позволяет вам увеличивать семантическую версию на основе основных, второстепенных или патч-уровней. Примеры: 'npm version major',' npm version minor', ​​'npm version patch' – Noah

ответ

73

Да, это необходимо для semantic versioning, который используется при моделировании версий пакетов npm. Вот the snippet from npm help json:

Версия должна быть распознаваем node-semver, который в комплекте с НПМ как зависимость. (npm install semver использовать его.)

Вот как реализация semver НПМ отличается от того, что на semver.org:

  • Версии можно начать с «V»
  • Числовой пункт отделен от основного трёх- номер версии дефисом будет интерпретироваться как номер сборки и увеличит версию. Но, если тег не является числом, разделенным дефисом, тогда он рассматривается как тег перед выпуском и меньше версии без тега. Так, 0.1.2-7 > 0.1.2-7-beta > 0.1.2-6 > 0.1.2 > 0.1.2beta
+25

классный. Ошибка должна просто сказать что-то о влиянии «npm требует семантического управления версиями». –

+2

открыть проблему на странице npm github https://github.com/isaacs/npm – Noah

+0

++ для обозначения предпочтительной обработки помеченных релизов – Benxamin

4

Так да, короткий ответ «Вы должны использовать семантические версии»

Но рассуждение за этим стоит, чтобы обеспечить разумную, однородную версию пакета для всех пользователей НОГО. При получении номера версии пакета у вас есть уровень уверенности в том, что автор понимает semver и использует его должным образом.

Смежные вопросы