lobsite! ログイン アカウント作成

SvelteKit 静的ホスティング

プリレンダリングした SvelteKit サイトをホストできます。adapter-static でビルドすると、npx lobsite が build/ を HTTPS、フォーム、デプロイごとのプレビュー URL 付きでデプロイします。

adapter-static を使うと、ビルドが build/ を書き出し、それがデプロイされます。
HTML ファイル、フォルダ、または .zip をドロップ ブラウザ内で確認します。公開するまで何もアップロードされません。

SvelteKit は @sveltejs/adapter-static を使って、すべてのページをビルド時にプリレンダリングし、結果を通常のファイルとして書き出せます。Lobsite はそのファイルをホストします。静的アダプターでビルドして npx lobsite を実行すると、HTTPS 対応の *.lobsite.app アドレスでサイトが公開されます。このページは完全にプリレンダリングされたサイトについて説明します。サーバールートとフォームアクションには、サーバーで 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 により、すべてのページがビルド時にレンダリングされます。プリレンダリングできないページがあるとビルドが失敗してそのページを示すため、壊れたものはデプロイされません。
  • fallback: "200.html" はプリレンダリングできないページ向けです。SvelteKit が 200.html シェルを書き出し、Lobsite はファイルではないパスにそれを配信するため、それらのページはブラウザでレンダリングされます。検索エンジンと初回読み込みには、引き続きプリレンダリングされたページのほうが適しています。
  • trailingSlash はデフォルトのままでかまいません。/about は about.html として書き出され、/about で配信されます。

ビルド時に実行されるもの、できないもの

+page.server.js のものを含む load 関数は、ページのプリレンダリング時にビルド中に実行されるため、ファイルや API のデータが HTML に組み込まれます。動的ルートはページのリンクをたどって検出されます。リンクされていないものは prerender.entries に記載してください。サーバーなしでは動作しないものは、フォームアクション、プリレンダリングされた GET 以外の +server.js エンドポイント、リクエストごとに実行されるフック、Cookie の読み取りです。お問い合わせフォームは、フォームアクションの代わりに /_lobsite/forms/contact に送信してください。フォームをご覧ください。

変更されたファイルのみアップロード

ファイルはハッシュで保存されます。変更のないサイトを再デプロイしてもアップロードは 0 バイトです。

デプロイごとに URL を発行

公開前にプレビューできます。リダイレクトも含めてワンクリックでロールバックできます。

すべてに HTTPS

すべてのサイトに、最初のデプロイから HTTPS 対応の *.lobsite.app アドレスが付きます。

すぐに使えるフォーム

フォームの送信先を /_lobsite/forms/contact にするだけです。スパムフィルターも含まれます。

設定は 1 つのファイルに

リダイレクト、ヘッダー、フォームは lobsite.toml に記述し、デプロイごとに一緒に反映されます。

明確な制限

すべての制限は公開されており、すべてのエラーが次にすべきことを教えてくれます。

SvelteKit ホストの比較

Lobsite Vercel Netlify Cloudflare Pages
プリレンダリングサイト(adapter-static) はい はい はい はい
サーバーレンダリング、フォームアクション いいえ はい はい はい
サーバーでのビルド いいえ: build/ をデプロイ はい はい はい
最初のデプロイ前のアカウント 不要: 6 時間公開、その後無料で残せる 必要 必要 必要
バックエンド不要のフォーム はい(サイトをアカウントに残した後) いいえ はい いいえ
カスタムドメイン はい、無料 はい はい はい

アプリがリクエスト時にページをレンダリングするなら、それを実行するホストのアダプターを使ってください。マーケティングサイト、ブログ、ドキュメントのようにすべてのページをプリレンダリングできるなら、Lobsite はコマンド 1 つでホストし、ビルドで変更されたファイルのみをアップロードします。

よくある質問

Lobsite にはどの SvelteKit アダプターを使うべきですか?

すべてのページをプリレンダリングした @sveltejs/adapter-static です。adapter-auto やプラットフォーム用アダプターはサーバーや関数向けにビルドしますが、Lobsite はそれらを実行しません。

フォールバックページのある SvelteKit SPA はここで動作しますか?

はい。adapter({ fallback: "200.html" }) を設定してください。Lobsite はファイルではないすべてのパスにステータス 200 で 200.html を配信し、SvelteKit のルーターがブラウザでページをレンダリングします。プリレンダリングされたページはそのまま配信されます。

SvelteKit のビルドがプリレンダリングエラーで失敗したのはなぜですか?

ページをビルド時にレンダリングできませんでした。多くの場合、url.searchParams、Cookie、フォームアクションを読み取っていることが原因です。その処理をブラウザに移すか、ビルド時に利用できるデータのみを使う load 関数に移してください。

プリレンダリング後も SvelteKit のページ遷移は動作しますか?

はい。プリレンダリングされたページは SvelteKit のクライアントを読み込み、最初のページの後はナビゲーションを引き継ぐため、リンクは完全な再読み込みなしでページを切り替えます。

関連項目