npm: Почему версия «0.1» недействительна?

92

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

$ 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

Для полноты картины вот рабочий 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 набора номеров версий? Почему сообщение об ошибке не более дружелюбное по сравнению с этим?

Стивен Лу
источник
1
взгляните на npm versionкоманду. Он позволяет увеличивать семантическую версию на основе основного, второстепенного уровня или уровня исправления. Примеры: npm version major, npm version minor,npm version patch
Ной

Ответы:

110

Да, это требуется для семантического управления версиями , которое используется в пакетах npm. Вот отрывок изnpm help json :

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

Вот как реализация semver в npm отличается от того, что есть на semver.org:

  • Версии могут начинаться с "v"
  • Числовой элемент, отделенный от основной трехзначной версии дефисом, будет интерпретироваться как номер «сборки» и увеличит версию. Но если тег не является числом, разделенным дефисом, то он рассматривается как предварительный тег и меньше версии без тега. Так,0.1.2-7 > 0.1.2-7-beta > 0.1.2-6 > 0.1.2 > 0.1.2beta
Мишель Тилли
источник
37
прохладно. Ошибка должна просто сказать что-то вроде «npm требует семантического управления версиями».
Стивен Лу
++ за предпочтительную обработку релизов с метками
Benxamin
@StevenLu Я думаю, здесь также следует упомянуть используемую версию semver, в настоящее время это 2.0.0.
Deoxyseia
12

Простой ответ - используйте 0.1.0

0.1 не будет работать

Удачного кодирования!

Станислав Барановский
источник
4

Так что да, краткий ответ: «Вам необходимо использовать семантическое управление версиями».

Но причина этого в том, чтобы предоставить разумную унифицированную версию пакета всем пользователям npm. Получая номер версии пакета, у вас есть определенная степень уверенности в том, что автор понимает semver и правильно его использует.

Спасибо
источник