自动化
使用语义发布对JavaScript库进行版本控制

通过manbetx官方网站多少

自动化:使用语义发布对JavaScript库进行版本控制

这张照片是在波特兰拍的

我们使用semantic-release自动确定库的下一个版本发布给我们的新产品管理组织。

下一个版本是通过扫描提交消息来确定的。他们必须跟随角度提交消息规则,在每个图书馆钩子将根据这些规则检查提交消息。

阿尔package.json一个项目应该只包含0.0.0-开发作为版本财产,语义释放将忽略该值。
只有在NPM上发布的包才会包含正确的版本号。

如何发布包的新版本

假设我们有一个库,哪个有npm版本2.3.4.

新版本将由相应项目的CI运行发布。您所要做的就是使用此处描述架构.

有三条提交消息将触发一个发布:

补丁释放:

修复:
        

        

功能发布:

壮举:
        

        

断开释放:


        
          断裂变化:
          

          
         
        

注意任何其他提交消息格式不会触发释放。

补丁发布(修理2.3.4--2.3.5

修复是对实现的更改,它可以消除错误。不改变公共API(方法名称和签名,导出)的库。安装固定版本时,库的使用者不必更改其实现。

奥普西

发布修复(将从中更新版本)2.3.42.3.5,使用类型修理在提交消息中:

修复:
        

        

您可以选择添加作用域,它是一个小写字符串,用于标识受影响的成分.

修复(修复)
        
         ):
         

         
        

当项目相当大时,作用域非常有用。

功能发布(壮举2.3.4--2.4.0

特性是对库实现的更改,它添加了附加功能不改变公共API图书馆的你可以增加新的出口,方法,甚至额外的,可选方法参数,但是在使用新特性安装库时,库的使用者必须不需要更改它们的实现。

是啊

发布一个特性(该特性将更新版本)2.3.42.4.0,使用类型壮举在提交消息中:

壮举:
        

        

您也可以选择添加一个作用域。

断开释放(断裂变化:2.3.4--3.0.0

每当库的公共API以要求使用者更新其实现的方式更改时你必须把零钱标记为“坏掉”.如果方法名和参数被重命名,以前的可选参数是必需的,移除参数,类被重命名。即使变化很小,一旦你破坏了图书馆的合同(这是公共API)它被认为是一个突破性的变化,根据Semver的说法.

繁荣

发布最新版本(将从更新版本2.3.43.0.0,使用文本断裂变化:(后面是两行的空格)在提交消息中:

重构:
        
         断裂变化:
         

         
        

您也可以选择添加一个作用域。

不是在断开的情况下,释放消息类型(此处重构)不能是任何有效类型。

典型变化

更新的依赖项

如果要手动更新库中的依赖项,你应该把改变作为一种解决办法,这样消费者也可以使用更新的依赖项。

重构

如果在不更改特性和公共API的情况下对库进行纯重构但是想要在消费者中使用重构版本,将重构作为一个特性提交。毕竟,您正在改进可作为功能的库,例如这可能是一个性能改进。

发布方式

将更改推送到远程存储库之后,一个作业将在CI运行器上运行。如果作业成功完成(例如如果所有测试都通过,且过梁没有报告任何错误),semantic-release将确定要发布的下一个版本。

这个“最高”承诺意志赢得修理>壮举>突破变化)这意味着,如果自上次发布以来的提交消息列表包含只有修复,补丁版本将增加(2.3.4--2.3.5)如果提交列表至少包含一个新功能,然后次版本将递增,补丁版本将设置为02.3.4--2.4.0)如果提交列表至少包含一个中断更改,然后主版本将增加,次版本和补丁版本将设置为02.3.4--3.0.0

此新版本将写入package.json包裹将是发布到NPM注册处.

释放快乐!

升空