2.5 KiB
2.5 KiB
| title | description |
|---|---|
| Скрипты | Выполняйте JavaScript с Figma Plugin API — запрашивайте узлы, массово изменяйте дизайн, создавайте фреймы. |
Скрипты
openpencil eval предоставляет полный Figma Plugin API в терминале. Читайте узлы, изменяйте свойства, создавайте фигуры — и сохраняйте изменения обратно в файл.
Базовое использование
openpencil eval design.fig -c "figma.currentPage.children.length"
Флаг -c принимает JavaScript. Глобальный объект figma работает как Figma Plugin API.
Запрос узлов
openpencil eval design.fig -c "
figma.currentPage.findAll(n => n.type === 'FRAME' && n.name.includes('Button'))
.map(b => ({ id: b.id, name: b.name, w: b.width, h: b.height }))
"
Изменение и сохранение
openpencil eval design.fig -c "
figma.currentPage.children.forEach(n => n.opacity = 0.5)
" -w
-w записывает изменения обратно во входной файл. Используйте -o output.fig, чтобы записать в другой файл.
Чтение из stdin
Для длинных скриптов:
cat transform.js | openpencil eval design.fig --stdin -w
Режим работы с приложением
Опустите файл для выполнения команд в запущенном настольном приложении:
openpencil eval -c "figma.currentPage.name"
Доступный API
Объект figma поддерживает:
figma.currentPage— активная страницаfigma.root— корень документаfigma.createFrame(),figma.createRectangle(),figma.createEllipse(),figma.createText()и др..findAll(),.findOne()— поиск по потомкам.appendChild(),.insertChild()— манипуляции с деревом- Все сеттеры свойств:
.fills,.strokes,.effects,.opacity,.cornerRadius,.layoutMode,.itemSpacingи др.
Это тот же API, который используют плагины Figma, поэтому существующие знания и фрагменты кода применимы напрямую.
JSON-вывод
openpencil eval design.fig -c "..." --json