Skip to content

Просмотр документов ​

CLI позволяет изучать документы дизайна без запуска редактора. Те же команды работают с открытым настольным приложением, если не указывать файл.

Установка

sh
npm install -g @open-pencil/cli
# или
bun add -g @open-pencil/cli

Общие сведения ​

Количество страниц и объектов, используемые шрифты и размер файла:

sh
openpencil info design.fig

Дерево объектов ​

sh
openpencil tree design.fig

Поиск объектов ​

По типу:

sh
openpencil find design.fig --type TEXT

По имени:

sh
openpencil find design.fig --name "Button"

Параметры можно использовать одновременно.

Запросы XPath ​

Селекторы XPath находят объекты по типу, атрибутам и положению в дереве:

sh
openpencil query design.fig "//FRAME"

По типу ​

sh
openpencil query design.fig "//TEXT"                    # Все текстовые объекты
openpencil query design.fig "//COMPONENT"               # Все компоненты
openpencil query design.fig "//INSTANCE"                # Все экземпляры

По атрибутам ​

sh
openpencil query design.fig "//FRAME[@width < 300]"     # Фреймы уже 300 пикселей
openpencil query design.fig "//*[@cornerRadius > 0]"    # Объекты со скруглёнными углами
openpencil query design.fig "//*[@visible = false]"     # Скрытые объекты
openpencil query design.fig "//TEXT[@fontSize >= 24]"   # Крупный текст
openpencil query design.fig "//*[@opacity < 1]"         # Объекты с неполной прозрачностью

По имени и содержимому ​

sh
openpencil query design.fig "//TEXT[contains(@name, 'Button')]"
openpencil query design.fig "//TEXT[contains(@text, 'Hello')]"

По иерархии ​

sh
openpencil query design.fig "//SECTION//TEXT"            # Текст внутри секций
openpencil query design.fig "//FRAME/TEXT"               # Непосредственные текстовые потомки фреймов
openpencil query design.fig "//COMPONENT_SET//INSTANCE"  # Экземпляры внутри наборов компонентов

Доступные атрибуты ​

name, width, height, x, y, visible, opacity, cornerRadius, fontSize, fontFamily, fontWeight, layoutMode, itemSpacing, paddingTop, paddingRight, paddingBottom, paddingLeft, strokeWeight, rotation, locked, blendMode, text, lineHeight, letterSpacing

Свойства объекта ​

sh
openpencil node design.fig --id 1:23

Страницы и переменные ​

sh
openpencil pages design.fig
openpencil variables design.fig

Работа с открытым приложением ​

Если настольное приложение запущено, не указывайте путь к файлу. CLI подключится по RPC к открытому документу:

sh
openpencil documents list
openpencil tree
openpencil tree --document-id tab-123 --page-id 0:1
openpencil eval --document-id tab-123 --page-id 0:1 -c "..."

Для автоматизированных процессов сначала вызовите openpencil documents list --json, а затем явно передавайте --document-id и --page-id, не полагаясь на видимую активную вкладку или страницу. Как открывать, сохранять, переключать и закрывать документы, отменять изменения, менять настройки и вызывать любые инструменты редактора, описано в Controlling the App.

Проверка качества ​

Проверка имён, компоновки, структуры и доступности:

sh
openpencil lint design.fig
openpencil lint design.pen --preset strict
openpencil lint design.fig --rule color-contrast
openpencil lint design.fig --list-rules
openpencil lint design.fig --fix -o fixed.fig

Добавьте --json, если результат будет обрабатывать другая программа: каждое сообщение содержит fix и suggestions в виде данных. --fix применяет безопасные исправления — привязывает цвета к подходящим переменным цвета и округляет геометрию до целых пикселей — и записывает результат в файл .fig, указанный в -o.

Вывод JSON ​

Все команды поддерживают --json. Результат можно передать jq, проверке CI или другой программе:

sh
openpencil tree design.fig --json | jq '.[] | .name'

Released under the MIT License.