使用最新的主要版本
Use latest major version
在我的 JavaScript 应用程序中,我可能会在我的 package.json
文件中声明几十个依赖项。
检查每个依赖项并查看它们在哪个版本上需要一些时间。
我只想说:使用最新的主要版本,而不是最前沿的。
举个例子,使用像 Git 这样的工具,我通常不关心在补丁级别进行更改,但如果出现新的主要版本,我会想要它。
在指定npm模块的版本时是否有类似的概念?
NPM 包(理论上)使用 SemVer.
在 SemVer 中,包的版本号为 X.Y.Z
。
Z
表示错误修复。 Y
表示没有改变现有功能的新功能。 X
表示破坏向后兼容性的主要版本。
执行 npm install --save <package>
将在您的 package.json
中生成一个版本字符串,如 ^2.3.9
,这意味着 "anything in the 2.*
range greater than or equal to 2.3.9
"。这意味着您将获得错误修复和非破坏性新功能,但不会意外更新到破坏应用程序的版本 3.0.0。
注意:我说"theoretically"是因为不是每个人都坚持SemVer的理想。您可能会发现 2.3.9 -> 2.3.10
升级有时会破坏内容。测试在这里很方便。
使用npm i -S <pkg>
通常应该做正确的事情。
一些注意事项:
以上假设您是否正在对 <pkg>
进行运行时依赖。在安装开发人员工具(如 grunt
)时使用 -D
或 -G
而不是 -S
。
Semantic versioning rule 9 表示发布者可以使用 -beta
等后缀来识别预发布版本。 Npm 依赖它,所以如果包发布者 FAILS 这样做,你可能会在不知情的情况下依赖预发布包。经验丰富的 npm 发布者应该了解得更多,而经验丰富的 npm 消费者应该查看文档。
主要版本为“0”表示该软件包仍处于初始开发阶段,不应将其视为稳定版。 (Semantic versioning rule 4.)
考虑使用 npm dist-tag ls <pkg>
查看是否有一些特定于包的标签比 latest
更能识别您的意图。如果是这样,请使用 npm I -S <pkg>@<tag>
来跟踪该标签。
您始终可以使用 npm outdated
来检查您是否直接依赖于具有新主要版本的包可能要考虑升级到。主要版本升级不会自动发生是设计使然。
在我的 JavaScript 应用程序中,我可能会在我的 package.json
文件中声明几十个依赖项。
检查每个依赖项并查看它们在哪个版本上需要一些时间。
我只想说:使用最新的主要版本,而不是最前沿的。
举个例子,使用像 Git 这样的工具,我通常不关心在补丁级别进行更改,但如果出现新的主要版本,我会想要它。
在指定npm模块的版本时是否有类似的概念?
NPM 包(理论上)使用 SemVer.
在 SemVer 中,包的版本号为 X.Y.Z
。
Z
表示错误修复。 Y
表示没有改变现有功能的新功能。 X
表示破坏向后兼容性的主要版本。
执行 npm install --save <package>
将在您的 package.json
中生成一个版本字符串,如 ^2.3.9
,这意味着 "anything in the 2.*
range greater than or equal to 2.3.9
"。这意味着您将获得错误修复和非破坏性新功能,但不会意外更新到破坏应用程序的版本 3.0.0。
注意:我说"theoretically"是因为不是每个人都坚持SemVer的理想。您可能会发现 2.3.9 -> 2.3.10
升级有时会破坏内容。测试在这里很方便。
使用npm i -S <pkg>
通常应该做正确的事情。
一些注意事项:
以上假设您是否正在对
<pkg>
进行运行时依赖。在安装开发人员工具(如grunt
)时使用-D
或-G
而不是-S
。Semantic versioning rule 9 表示发布者可以使用
-beta
等后缀来识别预发布版本。 Npm 依赖它,所以如果包发布者 FAILS 这样做,你可能会在不知情的情况下依赖预发布包。经验丰富的 npm 发布者应该了解得更多,而经验丰富的 npm 消费者应该查看文档。主要版本为“0”表示该软件包仍处于初始开发阶段,不应将其视为稳定版。 (Semantic versioning rule 4.)
考虑使用
npm dist-tag ls <pkg>
查看是否有一些特定于包的标签比latest
更能识别您的意图。如果是这样,请使用npm I -S <pkg>@<tag>
来跟踪该标签。
您始终可以使用 npm outdated
来检查您是否直接依赖于具有新主要版本的包可能要考虑升级到。主要版本升级不会自动发生是设计使然。