Javascript 如果我更新react模块,使现有的代码功能但Jest快照测试可能会中断,这是否应该是一个主要的版本冲突?

Javascript 如果我更新react模块,使现有的代码功能但Jest快照测试可能会中断,这是否应该是一个主要的版本冲突?,javascript,reactjs,npm,jestjs,semantic-versioning,Javascript,Reactjs,Npm,Jestjs,Semantic Versioning,假设我为react组件维护了一个模块,并且正在处理PR以添加一个新特性 作为该特性工作的一部分,我们还假设我已经重构了该组件,以移除一些以前在捕获渲染组件的Jest快照时可见的内部构件。(假设我删除了一个内部中间组件,而没有删除任何影响该组件的DOM输出的内容)。在功能上,组件是相同的,并且所有现有代码都是兼容的 由于某些用户的快照测试可能需要更新,我是否应该将功能作为组件的新主要版本发布?或者一个小版本就足够了?在这里回答我自己的问题 因此,它可以归结为公共API是否已更改或损坏。经过一番思考

假设我为react组件维护了一个模块,并且正在处理PR以添加一个新特性

作为该特性工作的一部分,我们还假设我已经重构了该组件,以移除一些以前在捕获渲染组件的Jest快照时可见的内部构件。(假设我删除了一个内部中间组件,而没有删除任何影响该组件的DOM输出的内容)。在功能上,组件是相同的,并且所有现有代码都是兼容的


由于某些用户的快照测试可能需要更新,我是否应该将功能作为组件的新主要版本发布?或者一个小版本就足够了?

在这里回答我自己的问题

因此,它可以归结为公共API是否已更改或损坏。经过一番思考,我确信,包含最终呈现的DOM中不可见的内部构件的酶呈现的Jest快照更像是私有API的泄漏,因此不打算受到主要semver碰撞的保护


我将我的更改作为次要版本发布。如果用户抱怨,我会对这个答案发表评论。

我不知道该怎么做;“重构组件以移除一些以前可见的内部构件,如果您捕获了呈现组件的Jest快照”,实际上相当于对公共API的更改,或者如果这是pkg提供的功能。在中定义了确定是否要升级主要版本时,您需要问自己的问题,基本上可以归结为:1。我所做的更改是否会对公共API引入任何向后不兼容的更改?2如果是的话,那就跳专业,否则就不要跳。你需要提供更多的信息给任何人来明确回答这个问题。您提供了相互冲突的信息。您说所有现有代码都是兼容的,然后您担心客户的测试可能会失败。是哪一个?请把你的信寄出去。捕获Jest快照是否在API的范围内?张贴相关的前后接口代码。如果您以前的版本包含了可公开访问的接口,但这些接口不再可用,那么这是一个突破性的改变。顺便说一句,您应该将您的工作分成两份提交。首先提交清理/重构工作,然后提交新功能。这是一种奇怪的情况来描述,但这是一个API改进。我重新编写了内部构件以支持更符合人体工程学的API,然后使用新API重新实现了旧的、不太友好的API,并将其标记为已弃用。这种方法使得删除更加容易,并且使首选API成为最干净的代码路径。