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

Фреймворки

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

Фреймворк Рантайм SSR SSG ISR Middleware Image Opt
Next.js COMPUTE
Astro COMPUTE
Nuxt 3 COMPUTE
Remix COMPUTE
Analog COMPUTE
SvelteKit STATIC / COMPUTE
Vite SPA STATIC
Angular STATIC
Astro (static) STATIC

Рантайм:

  • COMPUTE — полный серверный процесс (Bun / Node.js). Файловая система, WebSocket, native modules.
  • ONREZA Functions — короткие HTTP handlers и route pipeline steps с явным ctx.
  • STATIC — CDN-раздача. Бесплатно, мгновенно, без серверных ресурсов.

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

Middleware / route pipeline — задаётся в Edge Rules, а динамические шаги выполняются ONREZA Functions. Подходит для auth, redirects, geo-routing и A/B тестов.

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

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

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

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

Рантайм: COMPUTE — полный серверный процесс (Bun).

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

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

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

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

// В API route или Server Component
const dbUrl = process.env.DATABASE_URL;
Настройка Значение
Build Command npm run build
Output Directory .output
Install Command npm install

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

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

  • Поддержка Nuxt 3, auto-imports компонентов
  • ISR через routeRules: { '/blog/**': { isr: 3600 } }

SvelteKit поддерживается в двух режимах. Выберите адаптер по поведению приложения, а не только по имени фреймворка.

Настройка Значение
Build Command npm run build
Output Directory build
Install Command npm install
Entrypoint index.js (определяется автоматически)
svelte.config.js
import adapter from '@sveltejs/adapter-node';
export default {
kit: {
adapter: adapter()
}
};

Этот режим создаёт серверный процесс: CLI обозначает его как PROCESS, а в Build Output Manifest он представлен слоем COMPUTE. Маршруты +server, server load-функции и hooks.server требуют этого режима.

Для запуска серверного процесса runtime-артефакт включает build output и установленные Node.js-зависимости. Если после сборки dev dependencies не нужны, для npm можно использовать Build Command:

Окно терминала
npm run build && npm prune --omit=dev

Для pnpm, Yarn или Bun используйте эквивалентную команду своего package manager. Состав артефакта виден в build log; рекомендации при превышении лимита файлов приведены в Build Settings.

Автодетект проверяет адаптер и server-only routes. adapter-static выбирает STATIC, пока проект остаётся совместимым со статической генерацией; наличие +server, +page.server, +layout.server или hooks.server переключает предложение на PROCESS. Для SSR рекомендуется явно установить и настроить @sveltejs/adapter-node.

Настройка Значение
Build Command npm run build
Output Directory dist
Install Command npm install

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

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

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

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

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

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

Фреймворк Output Directory
Next.js (static) out
Vite dist
CRA build
Nuxt .output/public
Astro dist

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

Package Manager Команда
npm npm install или npm ci
yarn yarn install
pnpm pnpm install
bun bun install

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

Версия Статус Рекомендация
Node 22 LTS Минимальная поддерживаемая версия
Node 24 LTS Рекомендуется
Node 26 Current Для проверки совместимости с новыми возможностями

Версию можно изменить в Настройки → Сборка и развертывание → Версия Node.js.

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

  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

“Startup timeout” для серверных приложений (COMPUTE)

Заголовок раздела «“Startup timeout” для серверных приложений (COMPUTE)»

Если деплой с рантаймом COMPUTE зависает и показывает ошибку startup timeout:

  1. Проверьте порт — приложение должно слушать на process.env.PORT, а не на фиксированном порте (3000, 8080 и т.д.). Платформа назначает порт динамически.
// ✅ Правильно
const PORT = parseInt(process.env.PORT || "3000");
app.listen(PORT, "0.0.0.0");
// ❌ Неправильно
app.listen(3000);
  1. Не используйте dev-сервер в productionvite dev, next dev, webpack-dev-server не предназначены для продакшена. Соберите приложение (npm run build) и запускайте production-сервер.

  2. Слушайте на 0.0.0.0 — не на 127.0.0.1 или localhost. Платформа проверяет доступность сервера извне контейнера.