开源项目 Spartacus 的语义化版本(Semantic Version)迭代机制讲解
客户基于Spartacus库文件进行Storefront二次开发,并不会直接修改Spartacus发布的源代码。客户的二次开发代码,和Spartacus库文件是一种松耦合的依赖关系。客户升级Spartacus版本,在绝大多数情况下都不会影响到已有的二次开发代码。那么所谓的“绝大多数情况下”,具体是指什么呢?这就要从Spartacus的版本管理机制说起。
同绝大多数流行的开源框架和库一样,Spartacus的版本管理也采取了所谓语义化版本的机制,版本号由主版本号,次版本号和修订版本号三部分组成,中间由小数点分隔开。
主版本号的升高,用于引入无法向后兼容的变更或颠覆性的更新。无法向后兼容的变更,是指Spartacus升级之后,之前基于低版本编写的二次开发代码,需要人工调整后才能继续工作。而颠覆性的更新,一个例子就是Spartacus升级到3.0版本之后,首次支持B2B的电商功能。
次版本号的增加:用于引入新功能,并且版本更新之后,已有的二次开发代码不需任何调整仍然能够继续正常工作。源代码重构,性能优化等不属于bug修复的修改,也通过次版本号的增加而引入。
修订版本号:主要用于发布bug的修复。
Spartacus的修订版本发布,以周为单位,确保使用过程中发现的bug能尽早得到解决。次版本的发布以月为单位,这种更新的频率有助于客户快速地进行持续改进和持续创新。
而主版本的更新,可以参考SAP官方路线图网站上的声明。
从上面这张截图中package.json里定义的依赖,我们能够发现之前讲到的core, storefront和styles 3个库,再加上主要包含了文档和翻译的assets库。
其中版本号2.1.0之前的这个符号^,有个术语叫做hat, 这是语义化版本管理机制里的范围标识符之一,表示这个Storefront二次开发工程支持主版本号为2,且次版本号大于1的所有Spartacus版本,但是不支持主版本号为3的Spartacus. 换句话说,图中这个二次开发项目,只支持SAP Commerce B2C的功能,因为B2B的功能是Spartacus 3.0版本里才引入的。
- 点赞
- 收藏
- 关注作者
评论(0)