Skip to main content

layero.json — конфигурация в репозитории

layero.json — это опциональный JSON-файл в корне репозитория (или в подпапке для monorepo). Он переопределяет автоопределение Layero для этого репозитория и этого деплоя. Полезен, когда:

  • AI-агент (Claude Code, Cursor) настраивает деплой за вас — он кладёт правильные значения в этот файл одним PR;
  • Конфиг должен меняться по веткам (staging собирается иначе чем production);
  • В команде важно видеть в код-ревью, кто и зачем меняет настройки сборки.

Минимальный пример

layero.json
{
"$schema": "https://layero.ru/schema/layero-v1.json",
"framework": "nextjs",
"build": "npm run build",
"output": "out",
"node": "20"
}

Все поля опциональны. Можно положить только то, что нужно переопределить:

layero.json — только output
{
"$schema": "https://layero.ru/schema/layero-v1.json",
"output": "bundle"
}

Указание $schema подключает автодополнение и подсветку ошибок в любом IDE с поддержкой JSON Schema (VS Code, JetBrains, Neovim).

Поля

framework

Имя фреймворка. Перебивает автоопределение Layero. Допустимые значения и алиасы — в списке поддерживаемых фреймворков.

build

Shell-команда, которую Layero запустит для сборки. Перекрывает дефолт фреймворка. Пример: "pnpm build:prod".

install

Shell-команда для установки зависимостей. По умолчанию — reproducible-команда вашего пакетного менеджера (npm ci, yarn install --frozen-lockfile, pnpm install --frozen-lockfile).

output

Путь к папке с собранной статикой относительно корня проекта. Layero загружает её содержимое на CDN. Примеры: dist, build, out, .next, dist/app/browser.

node

Версия Node, которую использовать при сборке. Перебивает .nvmrc и engines.node из package.json. Принимает мажор ("20"), полную версию ("20.11.1") или alias ("lts").

runtime (зарезервировано)

Только для SSR/runtime-приложений (ssr_node, streamlit, gradio, flask). Большинству статических проектов это поле не нужно.

env, ignore (зарезервировано)

Будут поддержаны в следующих версиях схемы.

Порядок переопределения

При деплое Layero резолвит каждое поле сверху вниз — побеждает первое заданное:

1. layero.json в репозитории (самый высокий приоритет)
2. Настройки проекта в дашборде
3. Автоопределение по сигналам репо
4. Дефолт фреймворка (нижний приоритет)

В логе деплоя видно, откуда пришло каждое значение:

[config] framework=nextjs (from layero.json)
[config] node=20.11.1 (from .nvmrc)
[config] build=`npm run build` (from layero.json)
[config] output=out (default for nextjs)

Где должен лежать файл

  • Обычный проект: в корне репозитория.
  • Monorepo: в той же подпапке, что указана в root_directory проекта. Например, если в дашборде указано apps/web — Layero читает apps/web/layero.json.

Что отображается в дашборде

Когда layero.json найден и валиден, Layero показывает голубой баннер в мастере настройки и в логе деплоя:

ⓘ Найден layero.json в репозитории. Поля ниже подставлены из этого файла.

Если файл содержит ошибки (невалидный JSON, неизвестные поля, пустые значения) — появляется янтарный баннер со списком замечаний. Деплой при этом не падает: невалидные поля игнорируются, корректные применяются.

Schema URL

https://layero.ru/schema/layero-v1.json

URL стабильный. Новые версии схемы получат имена v2, v3, …; старые продолжат работать.