【软件工程系列】版本返回限定

博客目录

核心规则:~(波浪号)

含义:允许更新到最后一位指定的数字的更高版本,但锁定所有更左侧的版本号。

它的行为取决于你提供了多少位版本号:

  1. ~主.次.补丁 (例如 ~24.11.1

    • 锁定: 主版本和次版本。
    • 允许更新: 补丁号可以增加。
    • 例子: ~24.11.1 等价于 >=24.11.1 <24.12.0。允许 24.11.124.11.224.11.99,但不允许 24.12.025.0.0
  2. ~主.次 (例如 ~24.11

    • 锁定: 主版本。
    • 允许更新: 次版本可以增加,补丁号任意。
    • 例子: ~24.11 等价于 >=24.11.0 <25.0.0。允许 24.11.024.11.124.12.024.99.0,但不允许 25.0.0
  3. ~主 (例如 ~24

    • 锁定: 无(这种情况下不常用,通常直接用 ^>=)。
    • 允许更新: 主、次、补丁均可增加(但实际行为在 npm 中可能等同于 ^24.0.0)。

最常见和推荐的用法是 ~主.次.补丁,因为它能确保只自动引入错误修复(遵循语义化版本规范),而不会引入可能破坏兼容性的新功能。


与其他符号的对比表

符号 名称 规则(以 24.11.1 为例) 允许的版本示例 不允许的版本示例 用途
~24.11.1 波浪号/兼容版本 锁定主版本和次版本,允许补丁号更新。 24.11.1, 24.11.2, 24.11.9 24.12.0, 25.0.0 获取安全修复和 bug 修复,风险最低。
^24.11.1 插入符/默认范围 锁定主版本,允许次版本和补丁号更新。 24.11.1, 24.11.2, 24.12.0, 24.99.0 25.0.0 获取向后兼容的新功能,最常用。
24.11.1 精确版本 严格锁定该版本。 24.11.1 任何其他版本 确保绝对一致,用于锁定生产环境。
>=24.11.1 大于等于 任何大于或等于此版本的版本。 24.11.1, 24.12.0, 25.0.0, 30.0.0 24.11.0, 23.0.0 指定最低要求,允许大版本升级。
>24.11.1 大于 任何大于此版本的版本。 24.11.2, 24.12.0, 25.0.0 24.11.1, 24.11.0 明确排除当前版本。
<=24.11.1 小于等于 任何小于或等于此版本的版本。 24.11.1, 24.10.0, 23.0.0 24.11.2, 24.12.0 设置最高版本上限。
*x 通配符 匹配任何版本。 所有版本 不推荐,可能导致意外升级。

实际应用建议

  1. 库开发者 :在 package.json 中声明依赖时,通常使用 ^ 范围,给予使用者最大的兼容性灵活性。
  2. 应用开发者
    • package.json 中可以使用 ^ 来获取新功能。
    • 生成锁文件 (如 package-lock.json, yarn.lock)后,这个文件会记录当前安装的精确版本,确保团队和生产环境的一致性。^~ 只影响 npm update 或重新安装时的版本选择。
    • 对于极其关键、不希望有任何变化的依赖 ,可以考虑使用 ~ 甚至精确版本号。
  3. 安全修复 :当某个依赖发布了安全补丁(如从 24.11.1 升级到 24.11.2),使用 ~24.11.1 的项目在运行 npm update 时会自动获取这个修复,而使用 ^24.11.1 的项目也会获取。

觉得有用的话点个赞 👍🏻 呗。

❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

相关推荐
百锦再6 个月前
Git 使用大全:从入门到精通
git·version·版本·代码·分支·code·clone
我叫白小猿1 年前
【日常记录-Git】git fetch
git·仓库·版本·fetch·merge·branch
弗锐土豆1 年前
maven工程修改jdk编译版本的几种方法
java·eclipse·maven·编译·版本
江上清风山间明月1 年前
git撤销、回退某个commit的修改
git·commit·版本·撤销·回退·特定
网络研究院1 年前
微软九月补丁星期二发现了 79 个漏洞
windows·安全·微软·系统·漏洞·版本·更新
Amd7941 年前
使用 Nuxt Kit 检查模块与 Nuxt 版本兼容性
模块·nuxt·兼容性·版本·nuxt3·nuxt2·检查
LabVIEW开发1 年前
LabVIEW版本、硬件驱动和Windows版本之间兼容性
labview·labview开发·版本
ScilogyHunter2 年前
SylixOS 版本与 RealEvo-IDE 版本对应关系说明
ide·版本·sylixos
烦 啊2 年前
window golang 升级版本
golang·版本