历史上,WordPress以保持跨版本的向后兼容性而闻名。古腾堡在其生产公共API中尽可能遵循此示例。在极少数情况下,破坏向后兼容性是不可避免的,在这种情况下,会出现破坏:
- 应尽可能限制在API的较小表面积内。
- 应使用Dev Notes尽可能清晰地记录给第三方开发人员。
古腾堡代码库由两种不同类型的包组成:
- 生产包:这些是作为WordPress脚本提供的包(例如:wp-components、wp-editor…)。
- 开发包:这些是由开发人员工具组成的,第三方开发人员可以使用这些工具对主题和插件进行lint、测试、格式化和构建(例如:@wordpress/scrips、@wordpress/env…)。通常,这些在第三方项目中作为npm依赖项使用。
向后兼容性保证仅适用于生产包,因为更新是通过WordPress升级进行的。
生产包使用水处理
全局变量,为第三方开发人员提供API。这些API可以是JavaScript函数、变量和React组件。
- 函数的名称不应更改。
- 函数参数的顺序不应更改。
- 函数的返回值类型不应更改。
- 如果我们保证所有以前的调用仍然可能,则可以更改参数(新参数、语义修改)。
- 组件的名称不应更改。
- 不应拆除组件的支柱。
- 应继续支持现有属性值。如果一个组件接受一个函数作为道具,我们可以更新该组件以接受同一道具的新类型,但它不应该破坏现有的用法。
- 允许添加新道具。
- 只有在我们确保之前的上下文契约没有中断的情况下,才能添加或删除React上下文依赖项。
- 加载编辑器时,块的现有用法不应中断或标记为无效。
- 应保证现有砌块的样式。
- 标记更改应限制在尽可能小的范围内,但如果块需要更改其保存的标记,使以前的版本无效不推荐的版本应该添加块的。
React组件树中使用的类名和DOM节点不被视为公共API的一部分,可以修改。
对这些代码的更改应该谨慎进行,因为它可能会影响第三方代码的样式和行为(即使它们首先不应该依赖这些代码)。如果可能,保留旧的。如果没有,请记录更改并编写开发说明。
随着项目的发展,发现了现有API的缺陷,或者需要更新以支持新功能。当这种情况发生时,我们试图保证现有的API不会破坏并构建新的替代API。
为了鼓励第三方开发人员采用新的API,我们可以使用已弃用每当使用旧的API时,显示一条解释弃用的消息并提出替代方案。
当该功能被弃用时,请更加明确。使用自从
和插件
helper方法的选项。
例子:
已弃用(“wp.components.ClipboardButton”{自:'10.3',插件:“古腾堡”,替代项:“wp.compose.useCopyToClipboard”,} );
开发人员备注如下在make/core网站上发布的帖子在WordPress发布之前,向第三方开发人员通知开发人员API的重要更改,这些更改可以包括:
- 新API。
- 对现有API的更改可能会影响现有插件和主题。(例如:类名更改…)
- 不可避免的向后兼容性破坏,带有推理和迁移流。
- 重要的弃用(即使没有中断),以及推理和迁移流。
- 当处理拉请求时,发现需要开发注释,请添加需要开发说明标记到PR。
- 如果可能,在公关中添加注释,解释为什么需要开发说明。
- 当即将发布的WordPress版本的第一个测试版发布时,查看该版本中包含的合并PR列表,这些PR标记为需要开发说明标签。
- 对于这些PR中的每一个,写一个开发说明,并与WordPress发布负责人协调发布开发说明。
- 发布PR的开发说明后,删除需要开发说明来自PR的标签。