<span id="deploy-sveltekit-on-lizard" />

# Развертывание SvelteKit на Lizard

Используйте `@sveltejs/adapter-node` для сборки сервера SvelteKit на Lizard. Он создаёт `build/`, который запускается командой `node build` на порту `3000`. Установите и настройте адаптер явно; каркас, в котором остался `adapter-auto`, не задаёт цель развертывания на Node.

Начните с [полного примера исходного кода](https://github.com/lizard-build/docs/tree/main/_examples/sveltekit), в котором есть конфигурация и файлы, используемые в этом рецепте.

<span id="configure-the-adapter" />

## Настройка адаптера

```bash
npm install --save-dev @sveltejs/adapter-node
```

В `svelte.config.js` сохраните существующие preprocess и остальные настройки, но задайте `kit.adapter` как Node-адаптер:

```js
import adapter from '@sveltejs/adapter-node';

export default {
  kit: { adapter: adapter() },
};
```

Оставьте только тот адаптер развертывания, который планируете использовать. В частности, неиспользуемая зависимость `@sveltejs/adapter-static` может заставить текущий детектор выбрать статический путь, даже если в конфиге импортирован adapter-node.

| Параметр | Значение |
|---|---|
| Сборка | `npm run build`, обычно `vite build` |
| Вывод | `build/` |
| Среда выполнения | `node build` |
| Хост и порт | `HOST=0.0.0.0`, `PORT=3000` |
| Порт сервиса | `3000` |

<span id="test-the-production-server" />

## Проверка продакшн-сервера

```bash
npm ci
npm run build
HOST=0.0.0.0 PORT=3000 ORIGIN=http://localhost:3000 node build
```

Откройте страницу с серверным рендерингом и отправьте форму (form action), если она есть в приложении. Сохраните путь вывода адаптера по умолчанию для детекции, используемой в этом руководстве.

<span id="deploy-and-set-the-public-origin" />

## Развертывание и настройка публичного origin

После [настройки CLI](https://lizard.build/ru/docs/framework-guides#prepare-the-project):

```bash
lizard init --name sveltekit-app
lizard add --service web
lizard up --service web --port 3000
lizard ps --json
```

Задайте `ORIGIN` равным точному публичному HTTPS-ориджину из вывода развертывания, без пути. Например, замените этот плейсхолдер на свой реальный URL:

```bash
lizard secrets set ORIGIN=https://YOUR_PUBLIC_HOST --service web
```

Используйте кастомный домен вместо этого, если именно он будет ориджином для посетителей. Повторно проверьте формы после изменения переменной. Для нескольких разрешённых ориджинов или URL, полученных через прокси, прочитайте [руководство по Node-серверу SvelteKit](https://svelte.dev/docs/kit/adapter-node) и настройте доверенные заголовки прокси намеренно.

<span id="verify-and-troubleshoot" />

## Верификация и устранение неисправностей

Изучайте логи сборки и рантайма с помощью `lizard logs --build --service web --json` и `lizard logs --service web --json`. Откройте внутренний маршрут напрямую, отправьте форму и запросите несуществующий маршрут.

Если формы выдают ошибку межсайтовой отправки, проверьте `ORIGIN` до отключения проверки безопасности. Если `node build` не находит сервер, убедитесь в активном адаптере и пути вывода. Оставьте переопределения команды сервиса не заданными, чтобы использовался путь lizardpack.

<span id="static-sveltekit-sites" />

## Статические сайты SvelteKit

Приложение, которое может предрендерить все нужные страницы, может использовать `@sveltejs/adapter-static`, его вывод `build/` по умолчанию и порт сервиса `80`. Такой вывод не может запускать серверные экшены или эндпойнты во время запроса. Настройте предрендеринг для нужных маршрутов; установка пакета одной недостаточна.

Установите `@sveltejs/adapter-static` и замените импорт адаптера в `svelte.config.js`:

```js
import adapter from '@sveltejs/adapter-static';

export default {
  kit: { adapter: adapter() },
};
```

Для сайта, все маршруты которого можно сгенерировать, добавьте это в `src/routes/+layout.js`:

```js
export const prerender = true;
export const trailingSlash = 'always';
```

Удалите неиспользуемые адаптеры развертывания из зависимостей. Запустите `npm run build` и проверьте, что `build/` содержит каждую требуемую страницу. Для вывода по умолчанию оставьте переопределения команды сервиса не заданными и разверните новый сервис на порту `80`. Новые сборки будут отдавать сгенерированный HTML и возвращать HTTP 404 для отсутствующих страниц. Не используйте повторно порт `3000` из серверного рецепта для nginx.

Используйте [статические маршруты и 404](https://lizard.build/ru/docs/framework-guides/static-routing), чтобы выбирать между сгенерированными HTML-маршрутами и SPA-фолбэком. См. [SvelteKit static adapter](https://svelte.dev/docs/kit/adapter-static) для опций и ограничений фреймворка.

См. [проверенные версии и результаты в облаке](https://lizard.build/ru/docs/framework-guides/validation) для проверок развертывания от 9 сентября 2026 года и их ограничений.

