NPM始终安装最新的预发布版本

NPM始终安装最新的预发布版本,npm,npm-install,semantic-versioning,Npm,Npm Install,Semantic Versioning,我目前正在为我的一个新npm包设置预发布(在dev标签下) 在我的登台环境中,我希望npm始终安装2.0.0版本的最新预发布版本。因此,我在package.json中指定了“”:“>=2.0.0-dev.0”,但npm总是以某种方式安装2.0.0-dev.20180806T153307Z.3eaa718.HEAD,即使我使用删除的包锁.json进行了干净的安装。 根据“我的约束”匹配发布到npm的预发布版本 我终于找到了问题所在。由于此软件包之前没有发布给npm的非开发版本,npm始终安装连接

我目前正在为我的一个新npm包设置预发布(在
dev
标签下)

在我的登台环境中,我希望npm始终安装2.0.0版本的最新预发布版本。因此,我在package.json中指定了
“”:“>=2.0.0-dev.0”
,但npm总是以某种方式安装
2.0.0-dev.20180806T153307Z.3eaa718.HEAD
,即使我使用删除的
包锁.json进行了干净的安装。

根据“我的约束”匹配发布到npm的预发布版本

我终于找到了问题所在。由于此软件包之前没有发布给npm的非开发版本,npm始终安装连接到
最新
标记的预发布版本(请参见问题中的上图)。解决方案是只需在较旧版本下发布
false
版本,例如
1.9.9
。现在,一个干净的
npm安装
可以像预期的那样工作。

请不要在有文本的地方发布图像。剪切并粘贴文本,而不是图像。任何人都不可能获取数据副本进行测试。因为日期/时间戳是字母数字的,所以semver需要词汇排序,而不是数字排序顺序。您选择预发布标签是不幸的。我建议切换到YYYYMMDD.HHMMSS.Z格式。@jwdonahue很抱歉,您是对的。我不明白我的格式和你的建议有什么不同。数字字段按数字排序,字母数字字段按词汇排序。数字上11>0,词汇上0>11。词法排序基于用于字符的代码点,而数字排序要求字符串转换为数字。任何包含非数字内容的虚线字段都是字母数字字段。以零开头的虚线域也是如此,所以我的建议实际上也被打破了。它应该更像Y.M.D.H.M.S.Z。读一下。@jwdonahue好的,现在我得到了这个词法排序。但是,为什么semver checker和semver实现的semver npm包告诉我像
1.0.0-dev.20180809T143945Z.c0a13a1.HEAD这样的较新的预发布版本被我的约束所覆盖?