Next.jsをCloudflare workersから配信したい! Part 1
みなさま、Cloudflare workersってご存じですか?
90カ国 200都市のデータセンターで動いてるEdge serverです。
service workerのEdge server版ってとこです。
S3やCloud StorageのファイルをCDN経由で配信?
ま、それも悪くないですが、Edge serverでパッと処理してシュッと返してあげましょ!S3もCloud Storageも不要です(ヤッタ
Edge serverだから、クライアントの一番近いところで動いているので、爆速でHTMLをreponseを返すことができます。
キャッシュコントロールも可能なので、さらに爆速!Preactで更にドン!
そんな誘惑にこころ動かされたので試してみます。
注意!Workers Sitesを使うので、Cloudflare workersの有料プランである必要があります💰($5/月)
ではやってみましょう💨
Next.js
$ npx create-next-app
以上
wrangler
Cloudflare workersのCLIです。
インストール
$ npm install -D @cloudflare/wrangler
初期設定
CloudflareのアカウントIDとゾーンIDとAPI Tokenが必要です。
アカウントIDとゾーンIDは、Cloudflareのダッシュボードに表示されてるのでメモ。
API Tokenはworkers用のトークンを作成します。
こちらもダッシュボードに"API トークンを取得"ってリンクがあるので、そこからAPIトークンを作成します。
$ npx wrangler config Enter API Token:
さきほど作成したAPI Tokenを入力して終了でっす。
Siteの作成
workers siteを作成します。
$ npx wrangler init --site hello-next-worker
workers-siteってディレクトリとwrangler.tomlが作成されたはずです。
name = "hello-next-worker" type = "webpack" account_id = <あなたのアカウトID> workers_dev = true route = "" zone_id = <あなたのゾーンID> [site] bucket = "./out" entry-point = "workers-site"
account_id, zoon_idを設定します。
bucketにはNext.jsのbuildディレクトリを指定します。
これでwranglerの設定は完了です。簡単!
ビルド
Next.jsでbuildします📦
$ npx next build $ npx next export
Publish
workers devにpublishします。ProductionへのpublishはPart 2で。
$ npx wrangler publish
これで、https://hello-next-worker.<あなたのドメイン>.workers.dev
にpublishできるはずです🎉
まとめ
以上で、Next.jsのbuildしたファイルをCloudflare workers siteにpublishして、Edge serverから配信することができました!
どうでしょう?簡単でしたよね?
Part 2では、ProductionへのpublishとKVを使って、前のバージョンに切り戻したりしてみます。
Enjoy Cloudflare workers ヘ(^o^)ノ