Figma-export — это инструмент CLI для массового экспорта файлов Figma, FigJam и Figma Slides на локальный рабочий стол в собственном формате Figma .fig
/ .jam
/ .deck
. Figma-export поддерживает загрузку по командам, проектам и даже черновикам.
Этот инструмент использует REST API Figma и 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
Если вы используете единый вход для входа в Figma, вы можете либо вручную установить пароль (см. вики), либо предоставить файл cookie сеанса аутентификации Figma через FIGMA_AUTH_COOKIE
вместо FIGMA_EMAIL
и FIGMA_PASSWORD
:
FIGMA_AUTH_COOKIE= " my-auth-cookie-value "
FIGMA_ACCESS_TOKEN= " figd_abcdefghijklmnopqrstuvwxyz "
DOWNLOAD_PATH= " /Users/anonymous/Downloads "
WAIT_TIMEOUT=10000
Значение FIGMA_AUTH_COOKIE
должно быть значением файла cookie __Host-figma.authn
. Пожалуйста, обратитесь к вики, чтобы узнать, как получить это значение.
files.json
определяет, какие файлы Figma в вашей учетной записи будут загружены.
Кончик
Черновики — это всего лишь скрытый проект в Figma, поэтому вы можете загрузить их с помощью Figma-export. Посетите вики, чтобы узнать, как получить идентификатор проекта черновиков.
Для создания files.json
рекомендуется использовать одну из встроенных команд:
npm run get-team-files {team_ids ...}
— получает все файлы для всех проектов с заданными идентификаторами команд (через пробел).npm run get-team-files 12345 67890
npm run get-project-files {project_ids ...}
— получает все файлы для заданных идентификаторов проекта (через пробел)npm run get-project-files 12345 67890
Чтобы найти идентификатор своей команды Figma, перейдите на главную страницу Figma, щелкните правой кнопкой мыши свою команду на левой боковой панели и выберите «Копировать ссылку» . Последний сегмент скопированного вами URL-адреса будет содержать идентификатор вашей команды: https://www.figma.com/files/team/1234567890
.
Чтобы найти идентификатор проекта, перейдите на домашнюю страницу своей команды, щелкните проект правой кнопкой мыши и выберите «Копировать ссылку» . Последний сегмент скопированного вами URL-адреса будет содержать идентификатор проекта: https://www.figma.com/files/project/1234567890
.
Вы можете вручную создать этот файл, если он соответствует следующей структуре:
[
{
"name" : String,
"id" : String,
"team_id" : String?,
"files" : [
{
"key" : String,
"name" : String
},
...
]
},
...
]
Это модифицированная структура возвращаемого значения конечной точки файлов проекта GET Figma.
После создания файла files.json
вы можете запустить npm run start
чтобы начать загрузку. Статус каждой загрузки будет отображаться в консоли.
Каждый файл будет загружен по указанному вами DOWNLOAD_PATH
в папке с именем и идентификатором проекта. Каждый файл будет сохранен как имя файла и идентификатор (ключ). Структура папок будет выглядеть примерно так:
Project A (12345)/
├── File X (123).fig
└── File Y (456).fig
Project B (67890)/
└── File Z (789).fig
Если вы запустили get-team-files
, ваш files.json
также будет содержать ссылки на идентификаторы команды, поэтому проекты будут помещены в папку, названную в честь идентификатора команды. В этом случае структура папок будет выглядеть примерно так:
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. Вы можете увеличить этот тайм-аут, обновив конфигурацию timeout
в playwright.config.ts
.
Следующие команды доступны через npm run
:
Команда | Описание |
---|---|
get-team-files | Генерирует files.json из идентификаторов команды Figma. |
get-project-files | Генерирует files.json из идентификаторов проектов Figma. |
start | Начинает загрузку |
retry | Повторяет неудачные загрузки с последнего запуска. |
dry-run | Перечисляет файлы, которые будут загружены |
report | Показать HTML-отчет о последнем запуске |
В любой момент вы можете нажать ctrl+c
чтобы остановить выполнение команды.
timeout
в playwright.config.ts
).WAIT_TIMEOUT
).