npm:为什么版本“0.1”无效?

我必须将我的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套版本号? 为什么错误消息不是更友好?

是的,这是语义版本控制所必需的,这是npm软件包使用的版本控制scheme。 以下是npm help json的片段 :

版本必须由node-semverparsing, 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

所以是的,简短的回答是“你需要使用语义版本控制”

但是背后的推理是为所有npm的用户提供一个明智的,统一的软件包版本。 当获得一个软件包的版本号,你有一定程度的信心,作者理解semver正在使用它。