繁体   English   中英

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

[英]npm: Why is a version "0.1" invalid?

我不得不将我的 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 兼容性版本控制概念吗? 为什么错误消息不是更友好的呢?

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

简单的答案 - 使用0.1.0

0.1将不起作用

快乐编码!

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

但背后的原因是为所有 npm 用户提供一个合理的、统一的包版本。 当获得一个包的版本号时,你对作者理解 semver 并正确使用它有一定程度的信心。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM