🛝

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
https://developers.cloudflare.com/changelog/2025-01-31-workers-platforms-static-assets/

これまではSlidevプロジェクトをCloudflare Pagesで配信していましたが、今回はWorkersで配信します。

Workersプロジェクトの作成

Slidevプロジェクト、GitHubレポジトリの作成は省略します。
Getting Startedに従ってください。

Cloudflare Dashboardから"Workers & Pages"に移動し、Workersプロジェクトを作成します。

https://dash.cloudflare.com/

作成するとある程度自動で埋めてくれます。

ビルド

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
https://developers.cloudflare.com/workers/wrangler/

npx wrangler deploy

は、プロジェクトルートにwrangler.tomlがあればそれを読んでくれますが、ない状態だとrequiredなプロパティであるnamecompatibility-dateが足らず失敗します。
wrangler.tomlを作るか、CLIで直接設定してください。
また、Slidevはデフォルトでは./distにビルド成果物を出力するため、assets=./distも設定してください。

デプロイコマンド (再掲)

pnpx wrangler deploy --name={プロジェクト名} --assets=./dist --compatibility-date={今日のYYYY-MM-DD}

成功 🎉

無事配信できました。

Discussion