既存のものから始める
Workers Sites には Wrangler ↗ が必要です — 最新バージョンを使用してください。
既存の静的サイトプロジェクトをデプロイするには、事前に生成されたサイトから始めます。Workers Sites はすべての静的サイトジェネレーターと連携します。例えば:
- Hugo ↗
- Gatsby ↗、Nodeが必要
- Jekyll ↗、Rubyが必要
- Eleventy ↗、Nodeが必要
- WordPress ↗(Pagesを使用した静的WordPressサイトのデプロイに関するチュートリアルを参照)
-
プロジェクトのディレクトリのルートで
wrangler initコマンドを実行して、基本的なWorkerを生成します:Terminal window wrangler init -yこのコマンドは以下のファイルを追加/更新します:
wrangler.toml: プロジェクト設定を含むファイル。package.json: WranglerのdevDependenciesが追加されます。tsconfig.json: TypeScriptでWorkerを書くために、まだ存在しない場合は追加されます。src/index.ts: TypeScriptで書かれた基本的なCloudflare Worker。
-
サイトのビルド/出力ディレクトリを
wrangler.tomlファイルに追加します:[site]bucket = "./public" # <-- ここにビルドディレクトリ名を追加します。最も人気のある静的サイトジェネレーターのデフォルトディレクトリは以下の通りです:
- Hugo:
public - Gatsby:
public - Jekyll:
_site - Eleventy:
_site
- Hugo:
-
プロジェクトに
@cloudflare/kv-asset-handlerパッケージをインストールします:Terminal window npm i -D @cloudflare/kv-asset-handler -
src/index.tsの内容を以下のコードスニペットに置き換えます:
import { getAssetFromKV } from "@cloudflare/kv-asset-handler";import manifestJSON from "__STATIC_CONTENT_MANIFEST";const assetManifest = JSON.parse(manifestJSON);
export default { async fetch(request, env, ctx) { try { // アセットを提供するか、元のWorkerコードを実行するかを決定するロジックを追加します return await getAssetFromKV( { request, waitUntil: ctx.waitUntil.bind(ctx), }, { ASSET_NAMESPACE: env.__STATIC_CONTENT, ASSET_MANIFEST: assetManifest, }, ); } catch (e) { let pathname = new URL(request.url).pathname; return new Response(`"${pathname}" が見つかりません`, { status: 404, statusText: "見つかりません", }); } },};import { getAssetFromKV } from "@cloudflare/kv-asset-handler";
addEventListener("fetch", (event) => { event.respondWith(handleEvent(event));});
async function handleEvent(event) { try { // アセットを提供するか、元のWorkerコードを実行するかを決定するロジックを追加します return await getAssetFromKV(event); } catch (e) { let pathname = new URL(event.request.url).pathname; return new Response(`"${pathname}" が見つかりません`, { status: 404, statusText: "見つかりません", }); }}-
wrangler devまたはnpx wrangler deployを実行して、Cloudflare上でサイトをプレビューまたはデプロイします。 Wranglerは、設定されたディレクトリ内のアセットを自動的にアップロードします。Terminal window npx wrangler deploy -
所有していて、すでにCloudflareゾーンとして接続されている カスタムドメイン にサイトをデプロイします。
wrangler.tomlファイルにrouteプロパティを追加します。route = "https://example.com/*"
プロジェクトの設定についてさらに学びましょう。