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

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/16887993/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-02 14:41:53  来源:igfitidea点击:

npm: Why is a version "0.1" invalid?

node.jsnpm

提问by Steven Lu

I had to change the version of my npm app from 0.1 to 0.0.1 in order for npm not to do this.

我不得不将我的 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!     <[email protected]>

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

For completeness here's the working json

为了完整起见,这里是工作 json

$ cat package.json
{
    "name": "ply",
    "description": "ply server for local dev testing deployments",
    "version": "0.0.1",
    "private": true,
    "dependencies": {
        "express": "3.x"
    }
} 

version used to be "0.1" when it made the error.

发生错误时,版本曾经是“0.1”。

Is this some sort of API/ABI compatibility versioning concept requiring 3 sets of version numbers? Why is the error message not more friendly w.r.t. this?

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

回答by Michelle Tilley

Yes, this is required for semantic versioning, which is the versioning scheme npm packages use. Here's the snippet from npm help json:

是的,这是语义版本控制所必需的,这是 npm 包使用的版本控制方案。这是来自的片段npm help json

Version must be parseable by node-semver, which is bundled with npm as a dependency. (npm install semverto use it yourself.)

Here's how npm's semver implementation deviates from what's on semver.org:

  • Versions can start with "v"
  • A numeric item separated from the main three-number version by a hyphen will be interpreted as a "build" number, and will increase the version. But, if the tag is not a number separated by a hyphen, then it's treated as a pre-release tag, and is less than the version without a tag. So, 0.1.2-7 > 0.1.2-7-beta > 0.1.2-6 > 0.1.2 > 0.1.2beta

版本必须可由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

回答by Stanislau Baranouski

Simple answer - use 0.1.0

简单的答案 - 使用 0.1.0

0.1will not work

0.1不管用

Happy coding!

快乐编码!

回答by Thank you

So yea, the short answer is "You need to use semantic versioning"

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

But the reasoning behind that is to provide a sensible, uniform package version to all users of npm. When getting a version number of an package, you have somelevel of confidence that the author understands semver and is employing it properly.

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