Figma-export 是一个 CLI 工具,用于以 Figma 专有的.fig
/ .jam
/ .deck
格式将 Figma、FigJam 和 Figma Slides 文件批量导出到本地桌面。 Figma-export 支持按团队、项目甚至草稿进行下载。
该工具利用 Figma 的 REST API 和 Playwright 自动发现 Figma 文件并下载它们。
其他版本可能可以工作,但尚未经过官方测试。
您还需要一个 Figma 访问令牌,可以通过 Figma 用户配置文件设置生成该令牌。
cd
到存储库npm install
在存储库的根目录创建一个.env
文件:
FIGMA_EMAIL= " [email protected] "
FIGMA_PASSWORD= " hunter2 "
FIGMA_ACCESS_TOKEN= " figd_abcdefghijklmnopqrstuvwxyz "
DOWNLOAD_PATH= " /Users/anonymous/Downloads " # Absolute path where files will be downloaded to
WAIT_TIMEOUT=10000 # Time in ms to wait between downloads
如果您使用 SSO 登录 Figma,您可以手动设置密码(请参阅 wiki) ,也可以通过FIGMA_AUTH_COOKIE
代替FIGMA_EMAIL
和FIGMA_PASSWORD
提供Figma 身份验证会话cookie:
FIGMA_AUTH_COOKIE= " my-auth-cookie-value "
FIGMA_ACCESS_TOKEN= " figd_abcdefghijklmnopqrstuvwxyz "
DOWNLOAD_PATH= " /Users/anonymous/Downloads "
WAIT_TIMEOUT=10000
FIGMA_AUTH_COOKIE
的值应该是__Host-figma.authn
cookie 的值。如何获取这个值请参考wiki。
files.json
决定将下载您帐户中的哪些 Figma 文件。
提示
草稿只是Figma 中的一个隐藏项目,因此您绝对可以使用figma-export 下载它们。查看 wiki 以了解如何获取草稿项目 ID。
建议您使用内置命令之一来生成files.json
:
npm run get-team-files {team_ids ...}
- 获取给定团队 ID 内所有项目的所有文件(空格分隔)npm run get-team-files 12345 67890
npm run get-project-files {project_ids ...}
- 获取给定项目 ID 的所有文件(空格分隔)npm run get-project-files 12345 67890
要查找您的 Figma 团队 ID,请导航到您的 Figma 主页,右键单击左侧边栏中的您的团队,然后单击复制链接。您复制的 URL 的最后一段将包含您的团队 ID: https://www.figma.com/files/team/1234567890
://www.figma.com/files/team/1234567890 。
要查找项目 ID,请导航到团队主页,右键单击该项目,然后单击复制链接。您复制的 URL 的最后一段将包含项目 ID: https://www.figma.com/files/project/1234567890
://www.figma.com/files/project/1234567890 。
您可以自由地手动构建该文件,只要它遵循以下结构即可:
[
{
"name" : String,
"id" : String,
"team_id" : String?,
"files" : [
{
"key" : String,
"name" : String
},
...
]
},
...
]
这是 Figma 的 GET 项目文件端点的返回值的修改结构。
生成files.json
后,您可以运行npm run start
开始下载。每次下载的状态将显示在控制台中。
每个文件都将下载到您指定的DOWNLOAD_PATH
中以项目名称和 ID 命名的文件夹中。每个文件将被保存为文件名和 ID(密钥)。文件夹结构将如下所示:
Project A (12345)/
├── File X (123).fig
└── File Y (456).fig
Project B (67890)/
└── File Z (789).fig
如果您运行get-team-files
,您的files.json
还将引用团队 ID,因此项目将放置在以团队 ID 命名的文件夹中。在这种情况下,文件夹结构将如下所示:
1029384756/
├── Project A (12345)/
│ ├── File X (123).fig
│ └── File Y (456).fig
└── Project B (67890)/
└── File Z (789).fig
5647382910/
└── Project C (45678)/
└── File W (012).fig
默认情况下禁用并行下载。要启用它们,请更新playwright.config.ts
中的以下属性:
export default defineConfig ( {
...
fullyParallel : true ,
workers : 3 , // The maximum number of parallel downloads
...
} ) ;
如果遇到下载失败,您可以尝试使用npm run retry
命令仅重新运行那些失败的下载。
请注意,下载可能会因多种原因而失败,但通常是由于达到剧作家超时。您可以通过更新playwright.config.ts
中的timeout
配置来增加此超时。
通过npm run
可以使用以下命令:
命令 | 描述 |
---|---|
get-team-files | 从 Figma 团队 ID 生成files.json |
get-project-files | 从 Figma 项目 ID 生成files.json |
start | 开始下载 |
retry | 重试上次运行失败的下载 |
dry-run | 列出将要下载的文件 |
report | 显示上次运行的 HTML 报告 |
您可以随时按ctrl+c
来停止命令。
playwright.config.ts
中的timeout
)WAIT_TIMEOUT
)