sketch 导出与导入json文件 发表于 2023-05-25 | 更新于: 2023-05-29 sketch 元素 转 json1234567891011121314151617181920212223242526272829303132333435import { toSJSON } from 'sketch-json-helper';import fs from "@skpm/fs";const sketch = require('sketch')// 导出json文件export const exportJson = (context) => { const document = sketch.fromNative(context.document);//声明 const selectedLayers = document.selectedLayers; const arr = selectedLayers.layers; const format = 'json' if (arr.length === 0) sketch.UI.message("请选择要导出的组件!"); else if (arr.length > 1) sketch.UI.alert('提示', '只支持单选') else { arr.forEach(item => { const savePanel = NSSavePanel.savePanel(); savePanel.setTitle('Save File'); savePanel.setNameFieldStringValue(item.name) savePanel.setDirectoryURL(document.sketchObject.fileURL()) savePanel.setAllowedFileTypes([format]); if (savePanel.runModal() === NSModalResponseOK) { const url = savePanel.URL().URLByDeletingLastPathComponent().path(); const customFileName = savePanel.nameFieldStringValue() fs.writeFileSync(`${url}/${customFileName}.${format}`, JSON.stringify(toSJSON(item))); } }); sketch.UI.message(`导出结束`); }}; sketch json 转 元素1234567import {fromNative} from 'sketch/dom';import {toSJSON} from 'sketch-json-helper';const nativeLayer = fromSJSON(json);const sketchObj = fromNative(nativeLayer);adjustFrame(sketchObj);Document.getSelectedDocument().selectedPage.layers.push(sketchObj);