使用最新的主要版本
Posted
技术标签:
【中文标题】使用最新的主要版本【英文标题】:Use latest major version 【发布时间】:2016-07-17 18:38:14 【问题描述】:在我的 javascript 应用程序中,我可能会在 package.json
文件中声明几十个依赖项。
检查每个依赖项并查看它们所在的版本需要一段时间。
我只想说:,而不是最前沿的。
例如,对于像 Git 这样的工具,我通常不关心在补丁级别进行更改,但如果有新的主要版本发布,我会想要它。
在指定 npm 模块的版本时是否有类似的概念?
【问题讨论】:
“前沿”通常是一堆你可能想要的错误修复。 @ceejayoz 这可能只是我对景观的无知,但这与我通常不关心(或不想要)前沿事物的其他工具(如源代码控制工具或浏览器)有何不同? 另一个例子是像grunt
这样的模块。我只想要一个稳定的版本,而不是(我认为)还不稳定的前沿?
已经在这里回答:***.com/questions/16073603/… 请注意,这是假设最前沿的版本不是 NPM 上列出的版本。
@Jonathan.Brink NPM 包应该使用SemVer(很多人没有正确使用它,但这是理想的)。在 SemVer 下,版本是 X.Y.Z,其中 X 是重大的重大更改,Y 是新的但向后兼容的功能,Z 是错误修复。因此,如果您愿意使用 2.0.0,那么您可能最好使用 2.*.*,因为它将包含最新的错误修复 - 通常增加稳定性。最不稳定的版本将是全新的主要版本 IMO。
【参考方案1】:
使用 npm i -S <pkg>
通常应该做正确的事。
一些注意事项:
以上假设您是否对<pkg>
进行运行时依赖。在安装开发者工具(如 grunt
)时,请使用 -D
或 -G
而不是 -S
。
Semantic versioning rule 9 表示发布者可以使用-beta
之类的后缀来标识预发布版本。 Npm 依赖它,所以如果包发布者失败 这样做,你可能会在不知情的情况下依赖预发布包。老练的 npm 发布者应该知道得更多,老练的 npm 消费者应该检查文档。
主版本为 '0' 表示该软件包仍处于初始开发阶段,不应认为该软件包是稳定的。 (Semantic versioning rule 4.)
考虑使用 npm dist-tag ls <pkg>
来查看是否有某些特定于包的标签比 latest
更能识别您的意图。如果是这样,请使用 npm I -S <pkg>@<tag>
跟踪该标签。
您始终可以使用 npm outdated
来检查您是否直接依赖于具有新主要版本的软件包,可能需要考虑升级到。主要版本升级不会自动发生是设计使然。
npm-installnpm-dist-tagsemantic-versioning
【讨论】:
npm
包本身使用dist-tag
s标签效果很好,看这个类型npm dist-tag ls npm
。如果这不起作用,请通过键入 npm i -G npm
升级到 npm 的 latest
(稳定)版本。【参考方案2】:
NPM 包(理论上)使用SemVer。
在 SemVer 中,包的版本号为 X.Y.Z
。
Z
表示错误修复。 Y
表示不更改现有功能的新功能。 X
表示破坏向后兼容性的主要版本。
执行npm install --save <package>
将在package.json
中产生一个版本字符串,例如^2.3.9
,这意味着“2.*
范围内大于或等于2.3.9
的任何内容”。这意味着您将获得错误修复和非破坏性新功能,但您不会意外更新到破坏您的应用程序的 3.0.0 版本。
注意:我说“理论上”是因为不是每个人都坚持 SemVer 的理想。您可能会发现 2.3.9 -> 2.3.10
升级有时会破坏一些东西。测试在这里很方便。
【讨论】:
以上是关于使用最新的主要版本的主要内容,如果未能解决你的问题,请参考以下文章