在不破壞產品團隊的情況下棄用設計系統組件
如何在大型應用程式中推出突破性的設計系統變更:使用語義版本控制和使用追蹤來宣布、棄用、使用程式碼模型遷移和刪除。
核心要點
透過四個步驟淘汰組件:宣布更改並說明原因和替換,將舊組件標記為在次要版本中棄用並帶有明確的警告,幫助團隊使用指南和自動程式碼修改進行遷移,並僅在下一個主要版本中將其刪除。追蹤每一步仍有多少螢幕使用它,並且在使用率接近零之前不要刪除它。
為什麼棄用會出錯
當設計系統的變更讓產品團隊感到驚訝時,就會失敗:元件在更新中消失,建置中斷,團隊固定舊版並停止升級。一旦發生這種情況,系統就會失去其主要優勢,即一致性,因為產品的不同部分會轉向不同的版本。
一個四步驟過程
語意版本控制提供了一個簡單的契約:不相容的變更出現在主要版本中,當您棄用 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(元)