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.
2.2 KiB
| title | description |
|---|---|
| Scripting | 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
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
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.
openpencil eval design.fig -c "figma.currentPage.name = 'Updated'" -o updated.fig
Lire le script depuis stdin
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.