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щоб використовувати його самостійно.)

Ось як реалізація npm Semver відхиляється від того, що на 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


4

Так, так, коротка відповідь: "Вам потрібно використовувати семантичну версію"

Але аргументація цього полягає в тому, щоб надати розумну, уніфіковану версію пакета для всіх користувачів npm. Отримуючи номер версії пакету, ви маєте певний рівень впевненості в тому, що автор розуміє Semver і використовує його належним чином.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.