diff --git a/.changeset/bright-kings-mix.md b/.changeset/bright-kings-mix.md new file mode 100644 index 000000000..a845151cc --- /dev/null +++ b/.changeset/bright-kings-mix.md @@ -0,0 +1,2 @@ +--- +--- diff --git a/packages/icons/package.json b/packages/icons/package.json index 635aed7e4..90673949e 100644 --- a/packages/icons/package.json +++ b/packages/icons/package.json @@ -27,6 +27,7 @@ "clean": "rm -rf dist", "connect": "tsx scripts/figma-connect.ts", "sync": "tsx scripts/figma-sync.ts", + "sync:full": "FORCE_SYNC=1 tsx scripts/figma-sync.ts", "test": "vitest run --coverage" }, "dependencies": { diff --git a/packages/icons/scripts/figma-sync.ts b/packages/icons/scripts/figma-sync.ts index 7465d72fa..e8c53cc7c 100644 --- a/packages/icons/scripts/figma-sync.ts +++ b/packages/icons/scripts/figma-sync.ts @@ -10,6 +10,7 @@ * FIGMA_FILE_KEY (optional; default from code) * FIGMA_NODE_ID (optional; default from code) * DRY_RUN=1 (optional) Log actions without writing files + * FORCE_SYNC=1 (optional) Bypass fast-path bail-out and re-download all SVGs */ import fs from 'node:fs'; @@ -34,6 +35,7 @@ const FIGMA_ACCESS_TOKEN = process.env.FIGMA_ACCESS_TOKEN; const FIGMA_FILE_KEY = '98HKKXL2dTle29ikJ3tzk7'; const FIGMA_NODE_ID = '1:1483'; const DRY_RUN = process.env.DRY_RUN === '1'; +const FORCE_SYNC = process.env.FORCE_SYNC === '1'; if (!FIGMA_ACCESS_TOKEN || !FIGMA_FILE_KEY) { console.error('Missing FIGMA_ACCESS_TOKEN.'); @@ -381,6 +383,7 @@ async function main(): Promise { // 3) Fast-path bail-out: if set of names hasn't changed and sprite exists, stop early const existingIcons = readExistingIcons(); if ( + !FORCE_SYNC && existingIcons.length > 0 && sameSet( existingIcons, @@ -391,6 +394,9 @@ async function main(): Promise { log('exit', '🙅 No icon name changes detected. Skipping fetch/optimize/build.'); return; } + if (FORCE_SYNC) { + log('force', '🔄 Full sync enabled — re-downloading all icons.'); + } // 4) Diff output (kept from original for visibility) and set a change summary let changesetSummary = '';