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

博客目录

核心规则:~(波浪号)

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

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

  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 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

相关推荐
GDAL20 天前
使用 uv 管理 Python 版本
python·uv·版本
有梦想的攻城狮5 个月前
kafka-client各版本消息格式、协议版本及兼容性问题整理
分布式·kafka·版本
百锦再1 年前
Git 使用大全:从入门到精通
git·version·版本·代码·分支·code·clone
我叫白小猿2 年前
【日常记录-Git】git fetch
git·仓库·版本·fetch·merge·branch
弗锐土豆2 年前
maven工程修改jdk编译版本的几种方法
java·eclipse·maven·编译·版本
江上清风山间明月2 年前
git撤销、回退某个commit的修改
git·commit·版本·撤销·回退·特定
网络研究院2 年前
微软九月补丁星期二发现了 79 个漏洞
windows·安全·微软·系统·漏洞·版本·更新
Amd7942 年前
使用 Nuxt Kit 检查模块与 Nuxt 版本兼容性
模块·nuxt·兼容性·版本·nuxt3·nuxt2·检查
LabVIEW开发2 年前
LabVIEW版本、硬件驱动和Windows版本之间兼容性
labview·labview开发·版本