71 lines
1.9 KiB
Markdown
71 lines
1.9 KiB
Markdown
---
|
|
title: Scripting
|
|
description: Ejecuta JavaScript con la API de Plugins de Figma — consulta nodos, modifica diseños por lotes, crea frames.
|
|
---
|
|
|
|
# Scripting
|
|
|
|
`openpencil eval` te da acceso a la API completa de Plugins de Figma en la terminal. Lee nodos, modifica propiedades, crea formas — y luego guarda los cambios en el archivo.
|
|
|
|
## Uso Básico
|
|
|
|
```sh
|
|
openpencil eval design.fig -c "figma.currentPage.children.length"
|
|
```
|
|
|
|
El flag `-c` recibe JavaScript. El global `figma` funciona como la API de Plugins de Figma.
|
|
|
|
## Consultar Nodos
|
|
|
|
```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 }))
|
|
"
|
|
```
|
|
|
|
## Modificar y Guardar
|
|
|
|
```sh
|
|
openpencil eval design.fig -c "
|
|
figma.currentPage.children.forEach(n => n.opacity = 0.5)
|
|
" -w
|
|
```
|
|
|
|
`-w` escribe los cambios de vuelta al archivo de entrada. Usa `-o output.fig` para escribir en un archivo diferente.
|
|
|
|
## Leer desde Stdin
|
|
|
|
Para scripts más largos:
|
|
|
|
```sh
|
|
cat transform.js | openpencil eval design.fig --stdin -w
|
|
```
|
|
|
|
## Modo Aplicación en Vivo
|
|
|
|
Omite el archivo para ejecutar contra la aplicación de escritorio en ejecución:
|
|
|
|
```sh
|
|
openpencil eval -c "figma.currentPage.name"
|
|
```
|
|
|
|
## API Disponible
|
|
|
|
El objeto `figma` soporta:
|
|
|
|
- `figma.currentPage` — la página activa
|
|
- `figma.root` — la raíz del documento
|
|
- `figma.createFrame()`, `figma.createRectangle()`, `figma.createEllipse()`, `figma.createText()`, etc.
|
|
- `.findAll()`, `.findOne()` — buscar descendientes
|
|
- `.appendChild()`, `.insertChild()` — manipulación del árbol
|
|
- Todos los setters de propiedades: `.fills`, `.strokes`, `.effects`, `.opacity`, `.cornerRadius`, `.layoutMode`, `.itemSpacing`, etc.
|
|
|
|
Esta es la misma API que usan los plugins de Figma, por lo que el conocimiento existente y los fragmentos de código se transfieren directamente.
|
|
|
|
## Salida JSON
|
|
|
|
```sh
|
|
openpencil eval design.fig -c "..." --json
|
|
```
|