figma-export は、Figma、FigJam、および Figma Slides ファイルを Figma 独自の.fig
/ .jam
/ .deck
形式でローカル デスクトップに一括エクスポートするための CLI ツールです。 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_EMAIL
およびFIGMA_PASSWORD
の代わりにFIGMA_AUTH_COOKIE
を通じて 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 を使用して完全にダウンロードできます。ドラフトのプロジェクト ID を取得する方法については、Wiki を参照してください。
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
が含まれます。
プロジェクト ID を見つけるには、チームのホームに移動し、プロジェクトを右クリックして、 [リンクのコピー]をクリックします。コピーした URL の最後のセグメントには、プロジェクト ID: https://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
を実行してダウンロードを開始できます。各ダウンロードのステータスがコンソールに表示されます。
各ファイルは、プロジェクトの名前と ID で名付けられたフォルダー内の指定したDOWNLOAD_PATH
にダウンロードされます。各ファイルは、ファイルの名前と 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 タイムアウトに達することが原因であることに注意してください。 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
の使用をお勧めします)