Перейти к основному содержимому

Поддерживаемые фреймворки

Layero определяет фреймворк автоматически по содержимому package.json, конфиг-файлам в корне и lock-файлу. Если автодетект ошибся — переопределите выбор через layero.json, флаг layero deploy --type или настройки проекта в панели.

Автодетект (статика)

Порядок проверки важен — побеждает первый совпавший:

ФреймворкПризнакOutput dir
Next.js (export)dep nextout
Nuxtdep nuxt.output/public
Remix / React Router v7dep @remix-run/* / @react-router/*build/client
SvelteKitdep @sveltejs/kit + svelte.config.*build
Gatsbydep gatsbypublic
Astrodep astrodist
Docusaurusdep @docusaurus/corebuild
Storybookdep @storybook/*storybook-static
VitePressdep vitepress.vitepress/dist
Vitedep vitedist (из vite.config — если есть outDir, оттуда)
Angulardep @angular/core или angular.jsondist/{project}/browser
Create React Appdep react-scriptsbuild
Eleventy (11ty)dep @11ty/eleventy или eleventy.config.*_site
Hugohugo.toml или config.tomlpublic
Staticтолько HTML в корне, нет package.json.
Genericfallback (Manual Mode)dist

Команда сборки по умолчанию — npm run build (или yarn build / pnpm build в зависимости от lock-файла). Для Hugo вызывается hugo --gc --minify, для Nuxt — nuxt generate.

Явный пресет

Через CLI:

layero deploy --type vite

Доступные значения: nextjs, nuxt, remix, sveltekit, gatsby, astro, docusaurus, storybook, vitepress, vite, angular, cra, eleventy, hugo, static, generic. Принимаются также популярные алиасы — next, react-router, rr7, ng, 11ty.

Через layero.json в корне репозитория:

{
"$schema": "https://layero.ru/schema/layero-v1.json",
"framework": "vite",
"build": "pnpm build:prod",
"output": "bundle"
}

static — без сборки, в S3 уезжает то, что лежит в корне (минус правила игнорирования). Удобно для готового HTML.

Runtime-приложения

SSR Next.js (без output: 'export'), Streamlit, Gradio, Flask и т. п. запускаются как контейнеры — это отдельный режим, см. Runtime.

Версия Node

Приоритет источников:

  1. .nvmrc
  2. .node-version
  3. package.jsonengines.node
  4. По умолчанию — Node 20

Пакетный менеджер

Определяется по lock-файлу:

Lock-файлМенеджер
yarn.lockyarn
pnpm-lock.yamlpnpm
package-lock.json или ничегоnpm

:::caution npm и optional dependencies Если ваш package-lock.json сгенерирован на macOS, а билд-окружение — Linux, npm ci может надолго зависнуть на платформо-специфичных optional-зависимостях. Если столкнулись — опубликуйте lockfile, сгенерированный на Linux, либо переключитесь на pnpm/yarn. :::