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

Фреймворки

ONREZA автоматически определяет фреймворк вашего проекта и настраивает оптимальные параметры сборки.

ФреймворкРантаймSSRSSGISRMiddlewareImage Opt
Next.jsCOMPUTE
AstroISOLATE
Nuxt 3ISOLATE
RemixCOMPUTE
AnalogISOLATE
SvelteKitSTATIC
Vite SPASTATIC
AngularSTATIC
Astro (static)STATIC

Рантайм:

  • COMPUTE — полный серверный процесс (Bun / Node.js). Файловая система, WebSocket, native modules.
  • ISOLATE — лёгкий V8 runtime. Cold start ~5ms, fetch handler, без FS.
  • STATIC — CDN-раздача. Бесплатно, мгновенно, без серверных ресурсов.

ISR — Incremental Static Regeneration: страницы кэшируются и обновляются в фоне по TTL (revalidate).

Middleware — работает на всех рантаймах как edge-interceptor через отдельный ISOLATE. Подходит для auth, редиректов, A/B тестов.

При создании проекта ONREZA анализирует:

  1. package.json — зависимости и скрипты
  2. Конфигурационные файлыnext.config.js, vite.config.ts, и т.д.
  3. Структуру проекта — папки src/, pages/, app/

На основе этого анализа определяется фреймворк и настройки по умолчанию.

НастройкаЗначение
Build Commandnpm run build
Output Directory.next (SSR) или out (static)
Install Commandnpm install

Особенности:

  • Поддержка App Router и Pages Router
  • Автодетект static export (output: 'export' в конфиге)
  • Рекомендуется Node 20+

Environment Variables:

Переменные окружения задаются в Settings → Environment Variables (подробнее):

Окно терминала
# Серверные переменные (доступны только на сервере)
DATABASE_URL=postgres://user:pass@host:5432/db
API_SECRET=your-secret-key
# Клиентские переменные (доступны в браузере)
NEXT_PUBLIC_API_URL=https://api.example.com
NEXT_PUBLIC_SITE_URL=https://example.com

Доступ к серверным переменным в Edge Runtime:

import { env } from '@onreza/runtime/env';
// В API route или Server Component
const dbUrl = env.get('DATABASE_URL');
НастройкаЗначение
Build Commandnpm run build
Output Directory.output
Install Commandnpm install

SSR через Nitro → ISOLATE runtime. Поддержка ISR через routeRules.

Особенности:

  • Поддержка Nuxt 3, auto-imports компонентов
  • ISR через routeRules: { '/blog/**': { isr: 3600 } }
НастройкаЗначение
Build Commandnpm run build
Output Directorybuild
Install Commandnpm install

Особенности:

  • Требует @sveltejs/adapter-static для статической генерации
  • Поддержка prerendering
svelte.config.js
import adapter from '@sveltejs/adapter-static';
export default {
kit: {
adapter: adapter()
}
};
НастройкаЗначение
Build Commandnpm run build
Output Directorydist
Install Commandnpm install

Особенности:

  • Island architecture
  • Поддержка React, Vue, Svelte компонентов
  • Оптимизация изображений
НастройкаЗначение
Build Commandnpm run build
Output Directorydist
Install Commandnpm install

Если автодетект не сработал или вам нужны особые настройки:

Команда для сборки проекта. Примеры:

Окно терминала
npm run build
yarn build
pnpm build
bun run build
npx next build

Папка с результатом сборки. Зависит от фреймворка:

ФреймворкOutput Directory
Next.js (static)out
Vitedist
CRAbuild
Nuxt.output/public
Astrodist

Команда для установки зависимостей:

Package ManagerКоманда
npmnpm install или npm ci
yarnyarn install
pnpmpnpm install
bunbun install

ONREZA поддерживает несколько версий Node.js:

ВерсияСтатусРекомендация
Node 20LTSРекомендуется
Node 22CurrentДля новых фич
Node 24LatestЭкспериментально

Версию можно изменить в Settings → Build & Deployment → Node Version.

Для проектов в монорепозитории:

  1. Укажите Root Directory — путь к папке с проектом
  2. Build Command будет выполняться относительно этой папки
  3. Output Directory также относительно Root Directory
monorepo/
├── apps/
│ ├── web/ ← Root Directory: apps/web
│ │ ├── package.json
│ │ └── dist/ ← Output: dist (относительно root)
│ └── admin/
└── package.json
  1. Проверьте что команда работает локально
  2. Убедитесь что все зависимости в package.json
  3. Проверьте Node версию
  1. Проверьте что Build Command выполняется успешно
  2. Убедитесь что Output Directory указан правильно
  3. Проверьте конфигурацию фреймворка
  1. Убедитесь что Install Command выполнился
  2. Проверьте package.json на наличие зависимости
  3. Попробуйте npm ci вместо npm install