lobsite! Войти Регистрация

Статический хостинг SvelteKit

Размещайте пререндеренный сайт SvelteKit: соберите с adapter-static, и npx lobsite деплоит build/ с HTTPS, формами и URL предпросмотра.

С adapter-static сборка создаёт build/ — именно он и деплоится.
Перетащите HTML-файл, папку или .zip Проверяется в вашем браузере; ничего не загружается, пока вы не опубликуете.

SvelteKit умеет пререндерить каждую страницу при сборке и записывать результат простыми файлами с помощью @sveltejs/adapter-static. Lobsite размещает эти файлы. Соберите проект со статическим адаптером, выполните npx lobsite, и сайт заработает по адресу *.lobsite.app с HTTPS. Эта страница — о полностью пререндеренных сайтах. Серверным маршрутам и form actions нужен хостинг, который запускает SvelteKit на сервере.

Как это работает

  1. Перейдите на статический адаптер и пререндерьте каждую страницу (см. ниже), затем выполните npm run build. Сайт окажется в build/.
  2. Выполните npx lobsite в проекте. Деплоится build/, а не static/ или .svelte-kit/. Первый деплой не требует аккаунта и живёт 6 часов.
  3. Сохраните сайт по ссылке для получения в бесплатном аккаунте. После этого npm run build && npx lobsite обновляет тот же адрес.

adapter-static и пререндеринг

// svelte.config.js
import adapter from "@sveltejs/adapter-static";

export default {
  kit: { adapter: adapter() },
};
// src/routes/+layout.js
export const prerender = true;
  • prerender = true в корневом layout заставляет каждую страницу рендериться при сборке. Если страницу нельзя пререндерить, сборка падает и называет её, так что ничего сломанного не задеплоится.
  • fallback: "200.html" — для страниц, которые нельзя пререндерить: SvelteKit записывает оболочку 200.html, а Lobsite отдаёт её для любого пути, который не является файлом, и такие страницы рендерятся в браузере. Пререндеренные страницы всё равно лучше для поисковиков и первой загрузки.
  • trailingSlash можно оставить по умолчанию: /about записывается как about.html и отдаётся по /about.

Что выполняется при сборке, а что не сможет работать

Функции load, включая те, что в +page.server.js, выполняются во время сборки, когда страница пререндерится, поэтому данные из файлов или API вшиваются в HTML. Динамические маршруты находятся по ссылкам с ваших страниц; те, на которые нет ссылок, перечислите в prerender.entries. Без сервера не заработают: form actions, эндпоинты +server.js, кроме пререндеренных GET, хуки, выполняемые на каждый запрос, и чтение cookie. Форму обратной связи отправляйте на /_lobsite/forms/contact вместо form action; см. формы.

Загружаются только изменённые файлы

Файлы хранятся по хешу. Повторный деплой неизменённого сайта загружает 0 байт.

У каждого деплоя свой URL

Предпросмотр до публикации. Откат в один клик — вместе с перенаправлениями.

HTTPS везде

Каждый сайт получает адрес *.lobsite.app с HTTPS с первого деплоя.

Формы, которые просто работают

Направьте форму на /_lobsite/forms/contact. Фильтр спама включён.

Конфигурация в одном файле

Перенаправления, заголовки и формы хранятся в lobsite.toml и переезжают с каждым деплоем.

Понятные лимиты

Все лимиты опубликованы, а каждая ошибка подсказывает, что делать дальше.

Сравнение хостингов для SvelteKit

Lobsite Vercel Netlify Cloudflare Pages
Пререндеренные сайты (adapter-static) Да Да Да Да
Серверный рендеринг, form actions Нет Да Да Да
Сборка на сервере Нет: вы деплоите build/ Да Да Да
Аккаунт до первого деплоя Нет: 6 часов онлайн, затем сохраните бесплатно Да Да Да
Формы без бэкенда Да, когда сайт в аккаунте Нет Да Нет
Свой домен Да, бесплатно Да Да Да

Если ваше приложение рендерит страницы по запросу, используйте адаптер для хостинга, который его запустит. Если каждую страницу можно пререндерить, как у маркетинговых сайтов, блогов и документации, Lobsite разместит её одной командой и загрузит только файлы, изменённые каждой сборкой.

Частые вопросы

Какой адаптер SvelteKit использовать для Lobsite?

@sveltejs/adapter-static с пререндерингом каждой страницы. adapter-auto и адаптеры платформ собирают под серверы и функции, которые Lobsite не запускает.

Заработает ли здесь SPA на SvelteKit с резервной страницей?

Да. Укажите adapter({ fallback: "200.html" }): Lobsite отдаёт 200.html со статусом 200 для любого пути, который не является файлом, а роутер SvelteKit рендерит страницу в браузере. Пререндеренные страницы по-прежнему отдаются как есть.

Почему сборка SvelteKit упала с ошибкой пререндеринга?

Страница не смогла отрендериться при сборке — часто потому, что читает url.searchParams, cookie или form action. Перенесите эту работу в браузер или в функцию load, которая использует только данные, доступные при сборке.

Работают ли переходы между страницами SvelteKit после пререндеринга?

Да. Пререндеренные страницы загружают клиент SvelteKit, который после первой страницы берёт навигацию на себя, так что ссылки по-прежнему меняют страницы без полной перезагрузки.

См. также