使用最新的主要版本

在我的JavaScript应用程序中,我可能会在package.json文件中声明几十个依赖项。

要经历这些依赖关系中的每一个都需要一段时间,看看它们在哪个版本上。

我只想说:使用最新的主要版本,但不是stream血的边缘。

举个例子,像Git这样的工具,我通常不会在补丁级别上进行修改,但是如果一个新的主要版本出来了,我会需要它。

指定npm模块的版本有没有类似的概念?

NPM包(理论上)使用SemVer 。

在SemVer中,软件包获取XYZ的版本号。

Z表示错误修复。 Y表示新的function而不改变现有的function。 X表示打破向后兼容的主要版本。

npm install --save <package>会导致package.json中的版本string像^2.3.9 ,这意味着“ 2.*范围内的任何内容大于或等于2.3.9 ”。 这意味着你会得到错误修复和不间断的新function,但是你不会意外地更新到3.0.0版本,这会破坏你的应用程序。

注:我说“理论上”,因为不是每个人都坚持SemVer的理想。 你可能会发现一个2.3.9 -> 2.3.10升级,有时打破东西。 这里的testing很方便。

使用npm i -S <pkg>通常应该做正确的事情。

几点注意事项:

  • 如果你正在执行一个依赖于<pkg>的运行时,上面假设。 在安装开发人员工具(如grunt )时使用-D-G而不是-S

  • 语义版本规则9规定发布者可以使用后缀-beta来识别预发布版本。 Npm依赖于它,所以如果打包发布者FAILS来做这件事,你可能会在不知道的情况下依赖于预发布包。 复杂的npm发行商应该更好地了解,复杂的npm消费者应该检查文档。

  • 主要版本为“ 0 ”表示软件包仍处于初始开发阶段,软件包不应被视为稳定。 ( 语义版本规则4 )

  • 考虑使用npm dist-tag ls <pkg>来查看是否有一些特定于包的特定标签能更好地识别您的意图。 如果是这样,请使用npm I -S <pkg>@<tag>来跟踪该标记。

你总是可以使用npm outdated来检查你是否直接依赖于一个新的主版本可能要考虑升级到一个包。 主要的版本升级不是自动发生的。

npm-install npm-dist-tag 语义版本