使用最新的主要版本
在我的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 语义版本