🐛 fix(vscode): 导入原型插件时总是重启 Figma
插件已经在 Figma 清单里时原先只是把 Figma 拉到前台,而 Figma 把插件代码 缓存在进程里,改完原型点按钮看到的还是上一版 code.js。现在不管清单里有没有, 只要 Figma 在跑就先关掉再拉起,让它重新读盘。 Claude-Session: https://claude.ai/code/session_01Kgmb1LvrPmFX3NoUDB4zZC
This commit is contained in:
1 parent
387b323271
commit
2b02da27e7
1 file changed
+19
-9
@@ -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 里跑它`,
|
||||
)
|
||||
}
|
||||
Reference in new issue
Block a user