Skip to content

Scripter

open-pencil eval vous donne accès à l'API complète Figma Plugin dans le terminal. Lisez des nœuds, modifiez des propriétés, créez des formes — puis écrivez les changements dans le fichier.

Utilisation de base

sh
open-pencil eval design.fig -c "figma.currentPage.children.length"

L'option -c prend du JavaScript. Le global figma fonctionne comme l'API Figma Plugin.

Interroger des nœuds

sh
open-pencil 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 }))
"

Modifier et sauvegarder

sh
open-pencil eval design.fig -c "
  figma.currentPage.children.forEach(n => n.opacity = 0.5)
" -w

-w écrit les changements dans le fichier d'entrée. Utilisez -o output.fig pour écrire dans un fichier différent.

Lire depuis l'entrée standard

Pour des scripts plus longs :

sh
cat transform.js | open-pencil eval design.fig --stdin -w

Mode application en direct

Omettez le fichier pour exécuter sur l'application de bureau en cours d'exécution :

sh
open-pencil eval -c "figma.currentPage.name"

API disponible

L'objet figma supporte :

  • figma.currentPage — la page active
  • figma.root — la racine du document
  • figma.createFrame(), figma.createRectangle(), figma.createEllipse(), figma.createText(), etc.
  • .findAll(), .findOne() — rechercher dans les descendants
  • .appendChild(), .insertChild() — manipulation de l'arborescence
  • Tous les setters de propriétés : .fills, .strokes, .effects, .opacity, .cornerRadius, .layoutMode, .itemSpacing, etc.

C'est la même API que celle utilisée par les plugins Figma, donc les connaissances et les extraits de code existants sont directement transférables.

Sortie JSON

sh
open-pencil eval design.fig -c "..." --json

Released under the MIT License.