71 lines
2 KiB
Markdown
71 lines
2 KiB
Markdown
---
|
|
title: Scripter
|
|
description: Exécutez du JavaScript avec l'API Figma Plugin — interrogez des nœuds, modifiez des designs en lot, créez des frames.
|
|
---
|
|
|
|
# Scripter
|
|
|
|
`openpencil 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
|
|
openpencil 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
|
|
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 }))
|
|
"
|
|
```
|
|
|
|
## Modifier et sauvegarder
|
|
|
|
```sh
|
|
openpencil 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 | openpencil 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
|
|
openpencil 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
|
|
openpencil eval design.fig -c "..." --json
|
|
```
|