1

创建新的 node.js 项目时,首先运行以下内容:

npm init

还有一系列有助于初始化package.json文件的问题。其中一个问题是关于version.

作为答案提供的版本号应严格遵循semver标准。现在,如果我想使用不符合 semver 的不同版本控制标准怎么办?如何使用不同的版本标准强制执行?我是否还可以提供新标准的新规则,而不是 semver 来强制执行新的版本控制标准?

谢谢。

4

1 回答 1

2

您永远不应违反使用特定打包/分发工具所固有的合同。在这种情况下,npm 需要 SemVer,因为它在发布者和消费者之间提供了一个有用的通信渠道,并且很容易实现自动化。由于您的版本控制方案不区分错误修复、新功能和重大更改,因此如果您必须使用 npm 作为打包方案,您可以做的最好的事情就是将其映射到 SemVer。我可以想到两种方法来实现这一点。

  1. 对所有版本使用 0.0.1 并附加一个包含实际顺序版本的 -prerelease。如果每个带点的预发布字段都是纯数字的,并且它们在语义版本控制方面始终是合法的,那么这些将按照您的期望进行排序。
  2. 用户 0.0.X,其中 X 是版本控制方案中最重要的字段,您将剩余的值作为纯数字点字段放在 -prerelease 标记中。

这些方案中的任何一个都是合法的 SemVer,并向所有消费者宣布任何新版本都可能是一个重大变化。SemVer 中的 0.0 前缀本质上意味着所有赌注都已关闭。这样,愿意接受风险的消费者可以自动更新到你的最新版本,不愿意接受这种风险的消费者可以规避。

基于您的评论的示例:

0.0.1-2018.01
0.0.1-2018.02
0.0.1-2019.03

0.0.2018-01
0.0.2018-02
0.0.2019-03

在提供了上面的示例之后,我个人更喜欢第二种变体而不是第一种,但就 SemVer 规则而言,它们实际上是相等的。

于 2018-01-11T00:27:25.160 回答