🐛 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 entries = asExtensionEntries(settings.localFileExtensions)
|
||||||
const result = appendManifestEntry(entries, { manifestPath: manifestAbs, name: pluginName })
|
const result = appendManifestEntry(entries, { manifestPath: manifestAbs, name: pluginName })
|
||||||
|
|
||||||
if (result.added) {
|
// Figma 在跑就一律先关掉,两个原因都成立:
|
||||||
// 先关 Figma 再写,否则退出时的内存快照会把这次写入盖掉。
|
// 写清单时——退出时的内存快照会把这次写入盖掉;
|
||||||
if (await isFigmaRunning()) {
|
// 清单里已经有了——Figma 把插件代码缓存在进程里,不重启就还跑上一版
|
||||||
logger.add({ level: 'info', source: 'figma', message: '写配置前先退出 Figma(退出会覆盖 settings.json)' })
|
// code.js,改完原型点这个按钮会看到旧界面。
|
||||||
if (!await quitFigmaAndWait()) {
|
if (await isFigmaRunning()) {
|
||||||
fail(`Figma 在 ${QUIT_TIMEOUT_MS / 1000} 秒内没有退出,请手动关掉 Figma 后重试。`)
|
logger.add({
|
||||||
return
|
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 {
|
try {
|
||||||
const backup = `${settingsPath}.bak-${Date.now()}`
|
const backup = `${settingsPath}.bak-${Date.now()}`
|
||||||
await fsp.copyFile(settingsPath, backup)
|
await fsp.copyFile(settingsPath, backup)
|
||||||
@@ -191,6 +201,6 @@ export async function importPluginIntoFigma(opts: {
|
|||||||
void window.showInformationMessage(
|
void window.showInformationMessage(
|
||||||
result.added
|
result.added
|
||||||
? `原型插件「${result.name}」已导入 Figma,在 Plugins > Development 里跑它`
|
? `原型插件「${result.name}」已导入 Figma,在 Plugins > Development 里跑它`
|
||||||
: `原型插件「${result.name}」此前已导入,在 Plugins > Development 里跑它`,
|
: `Figma 已重启,原型插件「${result.name}」是最新代码,在 Plugins > Development 里跑它`,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user