Anima

Anima 的 Storybook 插件,用于将组件导出到 Figma

在 Github 上查看

一个 Storybook 插件,它提取 Storybook 数据并将故事转换为 Figma 组件,从而实现更好的设计-开发工作流程。

在我们的 博客文章 中了解更多关于动机和益处的信息。

演示

要求

此插件应该适用于任何框架。如果您发现插件无法正常工作,请提交问题。

:warning: 目前,我们仅支持 Webpack 构建器,如果您使用自定义的 Storybook 构建器(例如 vite 或 Storybook 的实验性功能之一),请告知我们或提交问题,因为插件可能无法按预期工作。

入门

1. 安装

npm install --save-dev storybook-anima --legacy-peer-deps
# yarn add -D storybook-anima

2. 在 .storybook/main.js 中注册插件

// .storybook/main.js
module.exports = {
  addons: ["storybook-anima"],
};

3. 设置 Anima 访问令牌

首先从 Anima Figma 插件或您的 Anima 团队设置中获取访问令牌。详细了解 如何在 Anima 中获取令牌

然后,您可以将访问令牌设置为名为 STORYBOOK_ANIMA_TOKEN 的环境变量。

您可以在项目的根文件夹中创建 .env 文件,或者在构建或动态运行 Storybook 时作为命令行参数提供环境变量。

# .env
STORYBOOK_ANIMA_TOKEN="<paste your TOKEN here>"

设计系统 Token 支持

Anima 还可以使用您的设计 Token 生成故事,并自动将其转换为 Figma 样式。

要启用此功能,请按照以下步骤操作

1 - 准备您的设计系统 Token 文件

该文件应使用 标准 JSON 格式编写。

示例

design-system-tokens.json

{
  "--primary": {
    "$value": "#1976D2"
  },
  "--secondary": {
    "$value": "#ffcd29"
  }
}

2 - 将您的设计系统 Token 文件添加到 Storybook 预览

转到 .storybook/preview.js 并导出一个名为 anima 的新参数,其中包含您的设计系统 Token 文件在 designTokens 下的路径

// .storybook/preview.js
export const parameters = {
  ...
  anima: {
    designTokens: require('../design-system-tokens.json')
  },
};


就是这样,现在,如果您有使用这些设计 Token 的组件,它们将作为使用原生 Figma 样式的组件导出到 Figma。

注意事项

目前,如果您故事的构成仅包含组件本身,而不是包含多个示例或文档的复杂故事,则此集成效果最佳。

简而言之,您在 Storybook 故事中看到的内容,就是您在 Figma 中获得的内容。

布尔控制类型限制

由于 Storybook 的一个错误,如果布尔控制没有明确指定 type,则插件无法正确处理它们。

例如,我们可能在处理具有以下 argTypes 定义的故事时遇到一些问题,因为参数没有明确指定 type

  argTypes: {
    disabled: { control: "boolean" },
    isContained: { control: { type: "boolean" } },
  },

在这种情况下,需要为每个布尔控制添加显式类型

  argTypes: {
    disabled: { control: "boolean", type: "boolean" },
    isContained: { control: { type: "boolean" }, type: "boolean" },
  },

变体数量限制

插件目前将任何给定故事的变体数量限制为最多 1025 个。因此,导出组件时某些属性可能丢失。

在不久的将来,我们将提供一些选项来自定义在导出过程中应包含或排除哪些控制。

开发

在单独的选项卡中运行以下命令以开始开发

npm run build
npm run dev

更多信息请访问:Anima Storybook 集成

许可证

MIT © Anima