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


90

我必须将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”。

这是某种需要3套版本号的API / ABI兼容性版本控制概念吗?为什么错误消息对此不友好?


1
看一下npm version命令。它允许您根据主要,次要或补丁程序级别来增加语义版本。例如:npm version majornpm version minornpm version patch
诺亚(Noah)

Answers:


107

是的,这对于语义版本控制是必需的,这是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 2013年

@StevenLu我认为这也应该提及所使用的semver版本,目前是2.0.0。
Deoxyseia '04


4

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

但是这样做的理由是为npm的所有用户提供一个合理的统一软件包版本。获取软件包的版本号时,您可以一定程度地确信作者能理解semver并正确使用它。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.