🛝
Cloudflare WorkersでSlidevを配信する
結論
ビルドコマンド
pnpm run build && rm ./dist/_redirects
デプロイコマンド
pnpx wrangler deploy --name={プロジェクト名} --assets=./dist --compatibility-date={今日のYYYY-MM-DD}
くわしく
今年からCloudflare Workersで静的アセットを配信できるようになりました。
Workers for Platforms now supports Static Assets | Cloudflare Docs
これまではSlidevプロジェクトをCloudflare Pagesで配信していましたが、今回はWorkersで配信します。
Workersプロジェクトの作成
Slidevプロジェクト、GitHubレポジトリの作成は省略します。
Getting Startedに従ってください。
Cloudflare Dashboardから"Workers & Pages"に移動し、Workersプロジェクトを作成します。
作成するとある程度自動で埋めてくれます。
ビルド
Slidevはビルド時に./dist/_redirects
を生成します。
しかし、これがあるとWorkersでは無限リダイレクトになってしまうため、ビルド後 (=デプロイ前) に削除します。
19:45:36.886 Invalid _redirects configuration:
19:45:36.886 Line 1: Infinite loop detected in this rule. This would cause a redirect to strip `.html` or `/index` and end up triggering this rule again. [code: 10021]
ビルドコマンド (再掲)
pnpm run build && rm ./dist/_redirects
デプロイ
WranglerはCloudflare Pages/WorkersにデプロイするためのCLIです。
Wrangler · Cloudflare Workers docs
npx wrangler deploy
は、プロジェクトルートにwrangler.toml
があればそれを読んでくれますが、ない状態だとrequiredなプロパティであるname
とcompatibility-date
が足らず失敗します。
wrangler.toml
を作るか、CLIで直接設定してください。
また、Slidevはデフォルトでは./dist
にビルド成果物を出力するため、assets=./dist
も設定してください。
デプロイコマンド (再掲)
pnpx wrangler deploy --name={プロジェクト名} --assets=./dist --compatibility-date={今日のYYYY-MM-DD}
成功 🎉
無事配信できました。
Discussion