71 lines
1.9 KiB
Markdown
71 lines
1.9 KiB
Markdown
---
|
|
title: Skripting
|
|
description: JavaScript mit der Figma Plugin API ausführen — Knoten abfragen, Designs im Stapel bearbeiten, Frames erstellen.
|
|
---
|
|
|
|
# Skripting
|
|
|
|
`openpencil eval` bietet dir die vollständige Figma Plugin API im Terminal. Knoten lesen, Eigenschaften ändern, Formen erstellen — und Änderungen zurück in die Datei schreiben.
|
|
|
|
## Grundlegende Verwendung
|
|
|
|
```sh
|
|
openpencil eval design.fig -c "figma.currentPage.children.length"
|
|
```
|
|
|
|
Das `-c`-Flag nimmt JavaScript entgegen. Das `figma`-Global funktioniert wie die Figma Plugin API.
|
|
|
|
## Knoten abfragen
|
|
|
|
```sh
|
|
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 }))
|
|
"
|
|
```
|
|
|
|
## Bearbeiten und speichern
|
|
|
|
```sh
|
|
openpencil eval design.fig -c "
|
|
figma.currentPage.children.forEach(n => n.opacity = 0.5)
|
|
" -w
|
|
```
|
|
|
|
`-w` schreibt die Änderungen zurück in die Eingabedatei. Verwende `-o output.fig`, um stattdessen in eine andere Datei zu schreiben.
|
|
|
|
## Von Stdin lesen
|
|
|
|
Für längere Skripte:
|
|
|
|
```sh
|
|
cat transform.js | openpencil eval design.fig --stdin -w
|
|
```
|
|
|
|
## Live-App-Modus
|
|
|
|
Lass die Datei weg, um gegen die laufende Desktop-App auszuführen:
|
|
|
|
```sh
|
|
openpencil eval -c "figma.currentPage.name"
|
|
```
|
|
|
|
## Verfügbare API
|
|
|
|
Das `figma`-Objekt unterstützt:
|
|
|
|
- `figma.currentPage` — die aktive Seite
|
|
- `figma.root` — das Dokumentwurzel-Element
|
|
- `figma.createFrame()`, `figma.createRectangle()`, `figma.createEllipse()`, `figma.createText()`, etc.
|
|
- `.findAll()`, `.findOne()` — Nachkommen durchsuchen
|
|
- `.appendChild()`, `.insertChild()` — Baummanipulation
|
|
- Alle Eigenschafts-Setter: `.fills`, `.strokes`, `.effects`, `.opacity`, `.cornerRadius`, `.layoutMode`, `.itemSpacing`, etc.
|
|
|
|
Dies ist dieselbe API, die Figma-Plugins verwenden, sodass bestehendes Wissen und Code-Snippets direkt übertragbar sind.
|
|
|
|
## JSON-Ausgabe
|
|
|
|
```sh
|
|
openpencil eval design.fig -c "..." --json
|
|
```
|