Prism: Design System Code Generator logo
Build Status Code Coverage for Prism on codecov Swift Package Manager Support

Prism 是 Gett 🚕 团队开发的设计系统代码生成器。

同步设计团队与工程团队是一个巨大的挑战。

随着团队规模的扩大,新的问题开始出现,例如如何以统一的方式,从单一来源可靠地对齐团队之间的颜色、文本样式、间距和其他设计细节。

Prism 的创建正是为了解决这个问题!它将 Zeplin 项目/样式指南或一组 Figma 文件作为输入,并基于项目中的一组模板生成您想要的任何输出代码,从而生成跨平台代码,这些代码始终与单一来源(您的设计文件)同步。

Prism 在 CI/CD 流程中使用时尤其有用,它可以消除设计移交和审查的摩擦,并确保您的所有团队在命名、数值等方面都正确同步。

入门指南

📹 视频

🌈 获取 Prism

有五种安装 Prism 的方式

  1. 使用 Homebrew 安装: brew install GettEngineering/tap/prism
  2. 使用 Mint 安装: mint install GettEngineering/Prism
  3. 从源代码构建: make install
  4. 直接使用 SPM 运行: swift run prism generate
  5. 在 Windows 上运行 (实验性)

🔑 获取 Provider API Token

Figma

要将 Prism 与 Figma 一起使用,您需要通过访问 https://www.figma.com 生成 Figma API 的个人访问令牌 (JWT)。然后,转到您个人资料下的设置部分

Finding the Settings section in Figma

滚动到帐户选项卡的底部,找到个人访问令牌部分,然后创建您的新令牌

Generating a Figma Personal Access Token

您需要公开此令牌才能运行 prism CLI 工具。 确保您配置了一个包含您的令牌的 FIGMA_TOKEN 环境变量。

在 CI 环境中运行 prism 时,我们建议将 FIGMA_TOKEN 添加为环境变量密钥。

当在本地使用 prism 或首次启动项目时,您可以简单地在本地运行 prism 之前运行 export FIGMA_TOKEN='zeplin_personal_token'

Zeplin

要将 Prism 与 Zeplin 一起使用,您需要通过访问 https://app.zeplin.io/profile/developer 并在 Personal access tokens 部分单击 Create new token 按钮来生成 Zeplin API 的个人访问令牌 (JWT)。

Generating a Zeplin Personal Access Token

您需要公开此令牌才能运行 prism CLI 工具。 确保您配置了一个包含您的令牌的 ZEPLIN_TOKEN 环境变量。

在 CI 环境中运行 prism 时,我们建议将 ZEPLIN_TOKEN 添加为环境变量密钥。

当在本地使用 prism 或首次启动项目时,您可以简单地在本地运行 prism 之前运行 export ZEPLIN_TOKEN='zeplin_personal_token'

👢 为您的项目引导 Prism

在您的项目文件夹中,运行 prism init

它将指导您选择 Zeplin 项目/样式指南或一组 Figma 文件作为源,以及其他有用的信息,以便正确生成代码。 一旦 prism init 成功,您将找到一个新的 .prism 文件夹,其中包含一个 config.yml 文件,概述您的偏好设置。

🎨 创建模板

Prism 使用位于项目 .prism 文件夹中,带有 .prism 后缀的模板。 这些 Prism 模板基本上是纯文本文件 — Prism 并不真正关心您使用什么格式或语言,只要您可以在 Prism 模板文件中表达它,它就可以生成任何类型的输出

Prism 在您的模板中查找称为 Tokens(令牌) 的内容。 这些令牌遵循以下格式: {{%token%}}。 您可以在 Examples(示例) 文件夹中找到几个示例模板。

以下是使用 Prism 模板为 iOS 和 Android 生成颜色代码的两个简短示例。

Colors.swift.prism:

Color.swift iOS Prism Template

colors.xml.prism:

Color.swift Android Prism Template

开发