设计系统自动化:入门技巧与资源
设计系统不仅仅是样式指南:它们由工作流、令牌、组件和文档组成——这些都是团队依赖构建一致产品的基础。随着项目增长,保持所有内容同步变得棘手。本文将探讨智能工具与适当自动化如何加速流程、减少错误,并帮助团队专注于设计而非维护。
设计系统基础
设计系统不仅仅是一组颜色和按钮。它是一种共享语言,帮助设计师和开发者共同构建优秀产品。其核心包括令牌(如颜色、间距、字体)、组件(如按钮、表单、导航),以及将项目联系在一起的规则和文档。
如果您曾使用过Google Material Design或Shopify Polaris等系统,就会了解设计系统如何为结构和行为设定清晰期望,使团队协作更顺畅、更快速。但虽然设计系统促进一致性,保持所有内容同步却是困难的部分。在Figma中更新令牌(如颜色或间距值)时,该变更必须显示在代码、文档和所有使用位置。
组件也是如此:当按钮行为发生变化时,它需要在整个系统中更新。这正是正确工具和一点自动化可以发挥作用的地方。它们有助于减少重复工作,并在系统增长时保持易于管理。
自动化构建模块
让我们从基础开始。颜色、排版、间距、半径、阴影以及构成视觉语言的所有微小值被称为设计令牌,它们旨在成为UI的单一事实来源。您会在Figma等设计软件、代码、样式指南和文档中看到它们。
问题是它们经常不同步,例如当设计中的颜色或组件发生变化但未在代码中更新时。团队规模越大或变化越多,这些不匹配就越明显;不是因为人们不注意,而是因为手动同步无法扩展。这就是为什么自动化令牌通常是团队开始构建设计系统时应该考虑的第一件事。这样,您可以从共享令牌源提取,并让其驱动设计和开发,而不是在Figma中编写相同的颜色值,然后在配置文件中再次编写。
令牌管理工具
Token Studio
Token Studio是一个Figma插件,可让您直接在文件中管理设计令牌,将其导出为不同格式,并同步到代码。
Specify
Specify允许您从Figma收集令牌并将其推送到不同目标,包括GitHub仓库、持续集成流水线、文档等。
Design-tokens.dev
如果您需要有关如何构建令牌、格式化它们(例如JSON、YAML等)和思考令牌类型的提示,Design-tokens.dev是一个有用的参考。
NamedDesignTokens.guide
NamedDesignTokens.guide有助于命名约定,这确实是一个常见的痛点,尤其是在处理大量令牌时。
一旦您的令牌设置并连接,您将花费更少时间修复不一致问题。它还为您提供了一个坚实的基础来扩展,无论是添加主题、切换品牌,甚至为多个产品构建系统。
那时命名真正开始重要。如果您的令牌或组件没有清晰命名,事情很快就会变得混乱。
注意:如果您正在处理大型系统,Vitaly Friedman的"How to Name Things"值得一看。
接下来是关于组件。令牌定义值,但组件是人们实际使用的东西,例如按钮、输入框、卡片、下拉菜单等。在完美设置中,您构建一次组件并在各处重复使用。但没有结构的情况下,事情很容易"偏离"范围。例如,很容易最终得到同一个按钮的五个版本,而代码中的内容与Figma中的不匹配。
自动化不会取代设计,而是将一切都连接到一个源。Figma组件与生产中的组件匹配,文档在组件更改时更新,整个团队从同一库中提取,而不是重建自己的版本。这是真正协作发生的地方。
组件自动化工具
| 工具 | 功能 |
|---|---|
| UXPin Merge | 让您使用真实代码组件进行设计。您原型化的就是构建的内容。 |
| Supernova | 帮助您发布设计系统,同步设计和代码源,并保持文档最新。 |
| Zeroheight | 将您的Figma组件转变为中央、可浏览且有文档记录的系统,供整个团队使用。 |
一切如何连接?
许多工作从您的设计应用程序内部开始。一旦您的令牌和组件就位,Supernova等工具通过提取设计数据、跨平台同步并生成生产就绪代码,帮助您更进一步。您不需要编写自定义脚本或使用Figma API来从自动化中获取价值;这些工具为您处理大部分工作。
但对于想要完全控制的团队,Figma确实提供了API。它让您可以执行以下操作:
- 直接从Figma文件拉取令牌值(如颜色、间距、排版)
- 跟踪组件和变体的更改
- 读取元数据(如样式名称、结构或使用模式)
- 映射设计中使用的组件位置
Figma API基于REST,因此与自定义脚本和自动化配合良好。您不需要庞大的设置,只需要正确的部分。在开发方面,团队通常使用Node.js或Python处理自动化。例如:
- 从Figma获取样式
- 将其转换为JSON
- 将值推送到设计令牌仓库或直接进入代码库
对于大多数用例,您不需要那种级别的设置,但了解它的存在是有帮助的,如果您的团队超出了无代码工具的范围。
您的令牌和组件来自哪里?更新如何发生?什么工具保持一切连接?一旦这些清晰,工作流就变得更容易管理,您花费更少时间尝试修复变更或不匹配。当令牌、组件和文档保持同步时,您的团队移动更快,花费更少时间修复相同问题。
提取设计数据
Figma是一个协作设计工具,用于创建UI:按钮、布局、样式、组件,以及构成产品视觉语言的所有内容。它也是您所有设计数据所在的位置,包括我们之前讨论的令牌。这些数据是我们要提取并最终连接到代码库的内容。但首先,您需要一个设置。
要跟随操作:
- 访问figma.com并创建免费账户
- 如果您喜欢本地工作,下载Figma桌面应用程序,但如果您的设备较旧,请注意系统要求
进入后,您将看到类似以下的主屏幕:
从这里开始,是时候设置您的设计令牌了。您可以从头开始创建所有内容,或使用Figma社区的模板节省时间。如果您不想自己构建所有内容,模板是一个很好的选择。但如果您喜欢完全控制,创建自己的设置也完全有效。
还有其他获取令牌的方法。例如,namedesigntokens.guide等网站允许您以JSON等格式生成和下载令牌。唯一的限制是Figma不允许您直接导入JSON,因此如果您选择该路线,您需要引入像Specify这样的中间工具来弥合差距。它有助于在Figma、GitHub和其他地方之间同步令牌。
但在本文中,我们将保持简单并坚持使用Figma。从Figma社区选择任何设计系统模板开始;有很多可供选择。
根据您选择的模板,您将获得预定义的令牌集,包括颜色、排版、间距、组件等。这些模板有各种类型:网站、电子商务、作品集、应用程序UI工具包等。在本文中,我们将使用/Design-System-Template–Community,因为它包括您开箱即用所需的大部分令牌。但如果您想尝试其他内容,请随意选择不同的模板。
一旦您选择了模板,就是时候下载令牌了。我们将使用Supernova,这是一个直接连接到您的Figma文件并提取设计令牌、样式和组件的工具。它使设计到代码的过程更加顺畅。
步骤1:在Supernova注册
访问supernova.io并创建账户。进入后,您将登陆如下仪表板:
步骤2:连接您的Figma文件
要拉入令牌,请转到Supernova中的Data Sources部分,并从可用源列表中选择Figma。(您还会看到其他选项,如Storybook或Figma变量,但我们专注于Figma。)接下来,单击Connect a new file,粘贴您的Figma模板链接,然后单击Import。
Supernova将从您的模板加载完整的设计系统。从您的仪表板,您现在可以看到所有令牌。
将令牌转换为代码
设计令牌在Figma内部很棒,但当您将它们转换为代码时,真正价值显现。这是您团队中的开发人员实际使用它们的方式。
问题是:许多团队默认手动复制颜色、间距和排版等值。但当您在Figma中更改它们时,代码立即不同步。这就是为什么自动化这个过程是一个巨大的胜利。
与其为每个项目重写相同的主题设置,您生成它,不断将设计转换为开发就绪的资产,并从单一事实来源保持一切同步。
现在我们已经将所有令牌放入Supernova,让我们将它们转换为代码。首先,转到Code Automation选项卡,然后单击New Pipeline。您将看到不同的选项,取决于您想要生成的内容:React Native、CSS-in-JS、Flutter、Godot等。
为了演示,让我们选择CSS-in-JS选项:
之后,您将进入一个设置屏幕,包含三个部分:Data、Configuration和Delivery。
Data
在这里,您可以选择一个主题。起初,它可能只给您"Black"作为选项;您可以选择那个或留空。目前真的不重要。
Configuration
这是您控制代码结构的地方。我选择了PascalCase作为令牌名称的格式化方式。您还可以更新间距、颜色或字体样式等如何分组和保存。
Delivery
这是您选择如何交付输出的地方。我选择了"Build Only",它构建代码供您下载。
完成后,单击Save。流水线已创建,您将在仪表板中看到它列出。从这里,您可以下载您的令牌代码,这些代码已经生成。
自动化文档
那么,设计系统中的文档有什么意义?
您可以将其视为团队的说明书。它解释了每个令牌或组件是什么,为什么存在,以及如何使用它。设计师、开发者和团队中的任何其他人都可以保持在同一页面上——无需猜测,无需来回。只是清晰的上下文。
让我们从我们停止的地方继续。Supernova能够处理您的文档。转到Documentation选项卡。这是您可以从同一位置开始编辑有关设计系统文档的所有内容的地方。
您可以:
- 向令牌添加描述
- 定义每个基础令牌的用途(以及不用于什么)
- 按颜色、排版、间距或组件组织部分
- 放入图像、代码片段或示例
您正在同一工具中构建文档,您的令牌也位于该工具中。换句话说,没有在工具之间跳跃,没有额外设置。这就是自动化发挥作用的地方。您编辑一次,您的文档保持与设计源同步。一切都保持在一个环境中。
完成后,单击Publish,您将看到一个要求您登录的新窗口。之后,您就能够访问您的实时文档站点。
自动化实用技巧
自动化很棒。它节省了数小时的手动工作,并保持您的设计系统在设计和代码之间紧密。诀窍是知道何时自动化以及如何确保它随时间持续工作。您不需要立即自动化所有内容。但如果您反复做同样的事情,那是一种红旗。
考虑使用自动化的一些迹象:
- 您在多个平台(如Web和移动设备)上使用相同的样式
- 您有一个被多个团队使用的共享设计系统
- 设计令牌经常更改,您希望更新自动流入代码
- 您厌倦了每次品牌团队调整颜色时的手动更新
您需要考虑三个步骤。让我们看看每一个。
步骤1:关注工具和API更新
如果您的流水线依赖于设计工具(如Figma)或平台(如Supernova),您将想知道何时进行更改,并评估它们如何影响您的工作,因为即使小的更新也会悄悄影响您的导出。
不时检查Figma的API变更日志是个好主意,特别是如果您的令牌同步感觉不对劲。他们经常更新变量和组件的结构方式,这可能会影响您的流水线。还有一个产品更新的RSS源。
所有这些都不是关于粘在发布说明上,而是有一个系统来检查是否某些东西突然停止工作。这样,您将在它们到达生产环境之前捕获问题。
步骤2:将流水线分解为较小步骤
团队常陷入的一个陷阱是尝试在一次大运行中自动化所有内容:颜色、间距、主题、组件和文档,全部在一次点击中处理。这听起来方便,但难以维护,甚至更难调试。
将自动化分成部分要容易管理得多。例如,有一个处理核心设计令牌(例如颜色、间距和字体大小)的单一工作流,另一个用于主题变体(例如浅色和深色主题),还有一个用于组件映射(例如按钮、输入框和卡片)。这样,如果您的团队更改Figma中间距令牌的命名方式,您只需要更新工作流的一部分,而不是整个系统。测试和重用较小步骤也更容易。
步骤3:每次测试输出
即使一切运行良好,总是花点时间检查导出的输出。它不需要复杂。几个关键事项:
- 令牌名称是否干净可读? 如果您看到像PrimaryColorColorText这样的内容,那是一个红旗。
- 是否有任何东西意外消失或重命名? 这发生的频率比您想象的要高,特别是在设计更改后的排版或间距令牌。
- UI是否仍然工作? 如果您使用像Tailwind、CSS变量或自定义主题这样的东西,双重检查新的令牌值没有破坏设计或构建过程中的任何内容。
为了及早发现问题,在流水线完成后立即运行像ESLint或Stylelint这样的工具有帮助。它们将在事情发货之前标记奇怪的语法或命名问题。
AI如何帮助
一旦您的自动化稳定,有一个下一层可以提升您的工作流:AI。它不仅仅用于编写代码或生成模型,而是用于帮助处理设计系统中消耗时间的小而重复的事情。当正确使用时,AI可以在不取代您对系统控制的情况下提供帮助。
以下是它可能适合您工作流的地方:
命名建议
当您处理数百个令牌时,清晰一致地命名它们是一个真正的挑战。一些AI工具可以通过基于您设计中的模式为您的令牌或组件建议干净、可读的名称来帮助。它不完美,但对于大型团队来说,是启动命名的好方法。
模式识别
AI还可以在您的设计文件中发现重复的样式或使用模式。如果多个按钮或卡片共享相似的间距、阴影或排版,由AI驱动的工具可以在人类注意到之前分组或建议组件进行系统化。
自动化文档
AI可以根据您的令牌、样式和使用情况生成文档的第一稿,而不是从零开始编写所有内容。您仍然需要审查和完善,但它消除了空白页问题并节省了数小时。
以下是一些已经以实用方式将AI带入设计和开发空间的工具:
- Uizard:Uizard使用AI自动将线框图转换为设计。您可以手绘一些东西,它将其转换为可用模型。
- Anima:Anima可以将Figma设计转换为响应式React代码。它还帮助填充真实内容或布局结构,使其成为设计与开发之间的强大桥梁,并带有一些AI辅助。
- Builder.io:Builder使用AI帮助可视地生成和编辑组件。对于需要快速构建页面的营销人员或非开发人员尤其有用。AI帮助简化布局、内容块和设计规则。
结论
本文不是在技术意义上实现完全自动化,而是更多关于使用智能工具简化处理设计系统的琐碎和手动方面。导出令牌、生成文档以及同步设计与代码可以自动化,使您的过程在正确设置下更快、更可靠。
与其每次从头重建所有内容,您现在有一种方法保持一致性,保持组织性,并节省时间。
延伸阅读
- Romina Kavcic的"Design System Guide"
- Vitaly Friedman的"Design System In 90 Days"