openpencil/packages/docs/fr/programmable/cli/scripting.md
mrhard9090 2c9bb8fcd7
feat(figma-api): add detachInstance() to instances (#778)
instance.detachInstance() turns an instance into a frame that keeps its content, as in Figma, from scripts run through eval. It reuses the graph's shared detach implementation, asserts editability like the proxy's other mutations, and joins the instance surface check against @figma/plugin-typings.
2026-09-30 05:19:11 +04:00

61 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: Scripting
description: Exécuter JavaScript avec une API compatible avec les plugins Figma pour interroger, modifier et générer des designs.
---
# Scripting
`openpencil eval` exécute JavaScript sur un document et fournit un objet global `figma`. Cette commande convient aux modifications par lots, à l’inspection, aux données de test et à l’automatisation sans ouvrir l’interface de l’éditeur.
## Utilisation de base
```sh
openpencil eval design.fig -c "return figma.currentPage.children.length"
```
`-c` accepte JavaScript. Si le code ne commence pas par `return`, OpenPencil l’exécute dans une fonction asynchrone et renvoie le résultat éventuel.
## Interroger des objets
```sh
openpencil eval design.fig -c "
return figma.currentPage
.findAll((node) => node.type === 'FRAME')
.map((node) => ({ id: node.id, name: node.name }))
"
```
## Modifier et enregistrer
`--write` ou `-w` remplace le fichier d’entrée. `--output` ou `-o` crée un autre fichier.
```sh
openpencil eval design.fig -c "figma.currentPage.name = 'Updated'" -o updated.fig
```
## Lire le script depuis stdin
```sh
cat transform.js | openpencil eval design.fig --stdin --write
```
## Document ouvert
Omettez le chemin pour exécuter le script sur le document actif dans l’application de bureau.
## Sortie
Dans un environnement non interactif, `eval` utilise JSON par défaut. `--json` l’impose explicitement et `--quiet` ou `-q` masque la sortie lorsqu’un fichier seul est écrit.
## API compatible
L’API suit le modèle de Figma Plugin API, mais agit sur SceneGraph et les formats OpenPencil. Elle couvre document, pages, création d’objets, opérations d’arbre, composants, variables et propriétés courantes.
Les identifiants exacts comme `figma.currentPage`, `createFrame`, `appendChild`, `fills`, `fontSize`, `layoutMode` et `strokeWeight` restent inchangés.
## Limites
Il n’existe pas encore d’équivalent complet pour `node.exportAsync()`, `node.setBoundVariable()`, `figma.combineAsVariants()`, les styles de peinture/texte et toutes les opérations booléennes vectorielles.
Selon le besoin, utilisez aussi la commande d’exportation, les outils du noyau ou les opérations directes de SceneGraph.