【问题标题】:npm: Why is a version "0.1" invalid?npm:为什么版本“0.1”无效?
【发布时间】:2013-05-29 02:06:12
【问题描述】:

我不得不将我的 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 兼容性版本控制概念吗?为什么错误消息对 w.r.t 不友好?这个?

【问题讨论】:

  • 看看npm version 命令。它允许您根据主要、次要或补丁级别增加语义版本。示例:npm version majornpm version minornpm version patch

标签: node.js npm


【解决方案1】:

是的,semantic versioning 是必需的,这是 npm 包使用的版本控制方案。这里是the snippet from npm help json

版本必须可由node-semver 解析,它作为依赖项与 npm 捆绑在一起。 (npm install semver 自己使用。)

npm 的 semver 实现与 semver.org 上的不同之处如下:

  • 版本可以以“v”开头
  • 用连字符与主要的三数字版本分隔的数字项将被解释为“内部版本”编号,并会增加版本。但是,如果标签不是由连字符分隔的数字,则将其视为预发布标签,并且小于没有标签的版本。所以,0.1.2-7 &gt; 0.1.2-7-beta &gt; 0.1.2-6 &gt; 0.1.2 &gt; 0.1.2beta

【讨论】:

  • 酷。该错误应该只是说“npm 需要语义版本控制”。
  • ++ 用于注意标记发布的首选处理
  • @StevenLu 我想这也应该提到使用的 semver 的版本,目前是 2.0.0。
【解决方案2】:

简单的答案 - 使用0.1.0

0.1 不起作用

编码愉快!

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-07
      • 2018-02-26
      • 2018-06-16
      • 2022-06-20
      • 2017-03-30
      • 2021-10-31
      • 2015-03-29
      相关资源
      最近更新 更多