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

Фреймворки

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

Фреймворк Рантайм SSR SSG ISR Middleware Image Opt
Next.js COMPUTE
Astro COMPUTE
Nuxt 3 COMPUTE
Remix COMPUTE
Analog COMPUTE
SvelteKit STATIC
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 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

Доступ к серверным переменным в 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 } }
Настройка Значение
Build Command npm run build
Output Directory build
Install Command npm install

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

  • Требует @sveltejs/adapter-static для статической генерации
  • Поддержка prerendering
svelte.config.js
import adapter from '@sveltejs/adapter-static';
export default {
kit: {
adapter: adapter()
}
};
Настройка Значение
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 20 LTS Рекомендуется
Node 22 Current Для новых фич
Node 24 Latest Экспериментально

Версию можно изменить в 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

“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. Платформа проверяет доступность сервера извне контейнера.