语义化版本
本文同步自我的个人博客:http://www.52cik.com/2015/12/05/semver.html
之前就觉得为什么 github 上的大部分东西都是 1.0.1、1.11.1 甚至 0.11.1 这种奇葩的版本。为什么 jQuery 1.9.9 之后不是 2.0.0 而是 1.10.0。而且在 npm init
的时候不能输入 1 或 1.0 这样的版本,就算你手动修改了 package.json 里的版本之后,就无法安装其他模块,报 Invalid version: "1.0"
无效版本错误。
相信这些问题不仅仅只有我疑问过吧。今天学习 node 模块源码的时候,翻到了个 semver 模块,看到了对于版本的处理,然后找到了《语义化版本 2.0.0》官方文档。
语义化版本
版本格式:主版本号.次版本号.修订号,版本号递增规则如下:
- 主版本号:当你做了不兼容的 API 修改,
- 次版本号:当你做了向下兼容的功能性新增,
- 修订号:当你做了向下兼容的问题修正。
先行版本号及版本编译信息可以加到“主版本号.次版本号.修订号”的后面,作为延伸。
这些都来至官方解释,详情就直接阅读《语义化版本 2.0.0》官方文档吧。文档里说有详细介绍了 SemVer 的规范,以及为什么这样做,什么情况用什么版本,还有常见的疑问,甚至你可以到GitHub 上提出您的问题。
都大一统吧
我之前一直都是 1.0,1.1,这样命名的,npm 下没办法才用 1.0.0。现在知道为什么了,突然感觉我之前好蠢。 如果大家都遵循这个规范后,看一眼就知道这次更新大概是做了什么调整了,是加了新东西,还是修复bug,还是完全不兼容的重构。用户就知道这次的东西是能直接升级的,还是需要修改自己的代码才能升级的。
希望和我一样不知道的朋友,赶紧都规范起来吧。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探