MST

星途 面试题库

面试题:Node.js项目中SemVer规范的应用场景

假设你正在维护一个Node.js开源项目,按照SemVer规范,当你对项目进行了以下改动:1. 修复了一个严重的安全漏洞;2. 添加了一个新的功能模块,但该功能模块与旧版本不完全兼容;3. 对项目内部的某个工具函数进行了优化,未影响外部接口。这三种情况分别应该如何更新项目的版本号,并说明原因。
14.2万 热度难度
前端开发Node.js

知识考点

AI 面试

面试题答案

一键面试
  1. 修复严重安全漏洞
    • 版本号更新:应更新为 x.y+1.z,即修订号(patch)增加。
    • 原因:SemVer规范中,修订号的变更用于表示向后兼容的错误修复。修复安全漏洞属于不改变API且向后兼容的修改,所以增加修订号。
  2. 添加新功能模块且与旧版本不完全兼容
    • 版本号更新:应更新为 x+1.0.0,即主版本号(major)增加,同时次版本号(minor)和修订号重置为0。
    • 原因:SemVer规定,主版本号的变更用于表示不向后兼容的重大改动。添加新功能且不兼容旧版本,符合这一情况,所以增加主版本号。
  3. 优化项目内部工具函数未影响外部接口
    • 版本号更新:应更新为 x.y+1.z,即次版本号(minor)增加。
    • 原因:SemVer规范里,次版本号的变更用于表示向后兼容的功能性新增。对内部工具函数优化,没有改变外部接口,属于向后兼容的功能性改进,因此增加次版本号。