From 2b02da27e7ce6ac139f0c60427c59ff90457fd97 Mon Sep 17 00:00:00 2001 From: cruldra Date: Tue, 15 Sep 2026 01:03:29 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20fix(vscode):=20=E5=AF=BC?= =?UTF-8?q?=E5=85=A5=E5=8E=9F=E5=9E=8B=E6=8F=92=E4=BB=B6=E6=97=B6=E6=80=BB?= =?UTF-8?q?=E6=98=AF=E9=87=8D=E5=90=AF=20Figma?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 插件已经在 Figma 清单里时原先只是把 Figma 拉到前台,而 Figma 把插件代码 缓存在进程里,改完原型点按钮看到的还是上一版 code.js。现在不管清单里有没有, 只要 Figma 在跑就先关掉再拉起,让它重新读盘。 Claude-Session: https://claude.ai/code/session_01Kgmb1LvrPmFX3NoUDB4zZC --- vscode/src/figma/importPlugin.ts | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/vscode/src/figma/importPlugin.ts b/vscode/src/figma/importPlugin.ts index 7f3b618..0d3eccd 100644 --- a/vscode/src/figma/importPlugin.ts +++ b/vscode/src/figma/importPlugin.ts @@ -147,15 +147,25 @@ export async function importPluginIntoFigma(opts: { const entries = asExtensionEntries(settings.localFileExtensions) const result = appendManifestEntry(entries, { manifestPath: manifestAbs, name: pluginName }) - if (result.added) { - // 先关 Figma 再写,否则退出时的内存快照会把这次写入盖掉。 - if (await isFigmaRunning()) { - logger.add({ level: 'info', source: 'figma', message: '写配置前先退出 Figma(退出会覆盖 settings.json)' }) - if (!await quitFigmaAndWait()) { - fail(`Figma 在 ${QUIT_TIMEOUT_MS / 1000} 秒内没有退出,请手动关掉 Figma 后重试。`) - return - } + // Figma 在跑就一律先关掉,两个原因都成立: + // 写清单时——退出时的内存快照会把这次写入盖掉; + // 清单里已经有了——Figma 把插件代码缓存在进程里,不重启就还跑上一版 + // code.js,改完原型点这个按钮会看到旧界面。 + if (await isFigmaRunning()) { + logger.add({ + level: 'info', + source: 'figma', + message: result.added + ? '写配置前先退出 Figma(退出会覆盖 settings.json)' + : '插件已在清单中,重启 Figma 让它重新读盘上最新的插件代码', + }) + if (!await quitFigmaAndWait()) { + fail(`Figma 在 ${QUIT_TIMEOUT_MS / 1000} 秒内没有退出,请手动关掉 Figma 后重试。`) + return } + } + + if (result.added) { try { const backup = `${settingsPath}.bak-${Date.now()}` await fsp.copyFile(settingsPath, backup) @@ -191,6 +201,6 @@ export async function importPluginIntoFigma(opts: { void window.showInformationMessage( result.added ? `原型插件「${result.name}」已导入 Figma,在 Plugins > Development 里跑它` - : `原型插件「${result.name}」此前已导入,在 Plugins > Development 里跑它`, + : `Figma 已重启,原型插件「${result.name}」是最新代码,在 Plugins > Development 里跑它`, ) }