在不破坏产品团队的情况下弃用设计系统组件
如何在大型应用程序中推出突破性的设计系统更改:使用语义版本控制和使用跟踪来宣布、弃用、使用代码模型迁移和删除。
核心要点
通过四个步骤淘汰组件:宣布更改并说明原因和替换,将旧组件标记为在次要版本中弃用并带有明确的警告,帮助团队使用指南和自动代码修改进行迁移,并仅在下一个主要版本中将其删除。跟踪每一步仍有多少屏幕使用它,并且在使用率接近零之前不要删除它。
为什么弃用会出错
当设计系统的变更让产品团队感到惊讶时,就会失败:组件在更新中消失,构建中断,团队固定旧版本并停止升级。一旦发生这种情况,系统就会失去其主要优势,即一致性,因为产品的不同部分会转向不同的版本。
一个四步过程
语义版本控制提供了一个简单的契约:不兼容的更改出现在主要版本中,当您弃用 API 的一部分时,您应该更新文档并发布一个包含弃用内容的次要版本,然后再将其删除。
- 宣布:解释原因,显示替代方案,给出时间表。
- 弃用:在文档和代码中标记它,并使用链接到指南的控制台或 lint 警告。
- 迁移:提供书面指南,对于代码,提供自动更新用法的代码模块。
- 删除:在下一个主要版本中,一旦使用量接近零。
自动化迁移
Codemod 是跨代码库重写代码的脚本。 jscodeshift 等工具可以同时在多个 JavaScript 或 TypeScript 文件上运行 codemod,因此可以在几分钟而不是几周内应用道具重命名或组件交换。将它们与标记剩余用法的 lint 规则配对。
措施采用情况
在不知道谁仍在使用组件的情况下,您无法计划删除。跟踪代码(导入、lint 警告)和设计文件(设计工具中的库分析)中的使用情况。发布数字,以便团队可以看到进展,并直接帮助最后几个团队,而不是强制截止日期。
不要忘记设计方面
也弃用设计库中的组件:使用“Deprecated”前缀重命名它,链接到替换项,并停止它出现在搜索中。否则,设计师会继续在新工作中使用它,迁移永远不会结束。动作和交互行为应该成为变更注释的一部分,因为即使看起来相同,但移动方式不同的替代品也会让人感觉破碎。
要记住的关键 Principle
- 宣布、弃用、迁移、删除:永远不要直接跳到删除
- 在次要版本中弃用;在主要版本中删除
- 使用 codemods 和 lint 规则自动迁移
- 跟踪代码和设计文件中的使用情况
- 在发行说明中包含动作和交互更改
常见问题解答
来源
- Semantic Versioning 2.0.0 — semver.org
- jscodeshift: a JavaScript codemod toolkit — GitHub(元)