WranglerでCloudflare Pagesを作成


最速で最強のCloudflare Pages/Workers

Webページやブログをホストしたいとき、あなたはどうしますか?

家でサーバーを用意する?

ホスティングサービスを探して契約する?

Cloudflareなら無料でWebページを全世界に公開できます。 しかも縛りがほとんどありません。簡単にメリットを挙げると:

  • 商用利用OK
  • リクエスト数/データ転送量なし(Workersの場合は10万リクエスト/日)
  • いくつ作成してもOK
  • プロジェクトは全てCFのエッジサーバーにデプロイ(どのロケーションからも爆速でアクセス可能)
  • (Pages)Githubとの連携が可能(プッシュに応じて自動デプロイ)

などなど… Workersの場合リクエスト数に制限はありますが、よっぽどのことがない限り1日に10万リクエストが来る事はありません。縛りが極めて少ないです。これが無料で出来るのだからやばい…

Cloudflare PagesとCloudflare Workersは最近だと結構似ている箇所が増えつつあって、統合もされ始めていますが、今回はCF Pagesに焦点を当ててお話します。

この記事の目標は「簡単なページを全世界に爆速でデプロイする」です。やってみましょう!

準備

始める前に準備しておきましょう。

今回はコマンドラインで進めていくので、Node.jsが必要になります。無い場合は入れておきましょう。

まずは適当にディレクトリ(フォルダ)を作りましょう。

作成したディレクトリ内で、以下のコマンドを実行してwranglerを導入します。

Wranglerとは、CloudflareのCLIツールです。主にWorkers向けに開発されたものですが、Pagesでも利用できます。

npm i wrangler --save-dev

npm i -g wranglerでグローバルにインストールしても構いません。お好きな方でどうぞ。

ログインも済ませておきましょう。npx wrangler loginで出来ます。

ringoxd\example> npx wrangler login
 ⛅️ wrangler 3.45.0
Attempting to login via OAuth...
Opening a link in your default browser: https://dash.cloudflare.com/oauth2/auth?...

URLが出てくる(もしくは自動でブラウザのウィンドウが開かれる)ので、ログインしましょう。

Successfully logged in.とターミナルに表示されれば成功です!

プロジェクトを作成する

プロジェクトを作成しましょう。対話式で作成できるので簡単に扱えます。

ringoxd\example> npx wrangler pages project create
√ Enter the name of your new project: ... ringoxd-project //プロジェクト名.pages.devになります。
√ Enter the production branch name: ... production //ブランチ名
To deploy a folder of assets, run 'wrangler pages deploy [directory]'.

これだけです。超簡単!

デプロイする

src/index.htmlを用意しました。

でぃれくとり

中身:

<h1>Hello Sekai!</h1>

npx wrangler pages deploy ディレクトリでデプロイできます。やってみましょう。

ringoxd\example> npx wrangler pages deploy src 
🌍  Uploading... (1/1)

✨ Success! Uploaded 1 files (1.31 sec)

✨ Deployment complete! Take a peek over at https://2a5ac602.example-for-blog-ringoxd.pages.dev

ブラウザでプロジェクト名.pages.devにアクセスすると…

できた

ちゃんと反映されています。ファイルが少ないのもありますが、このデプロイにはたったの数秒しか要していません。

ちなみに、5000枚以上のページがあっても1分程度しかかからないとの事。すげぇぇ..!

最強

画像: ゆーすけべー日記

おまけ(packages.jsonを編集して楽にする)

npx wrangler paegs deploy...なんて長すぎて面倒です。npm run deployでサクッとデプロイ可能にしましょう。

"scripts": {
    "deploy": "wrangler pages deploy src"
}

これでsrc/ディレクトリの内容をnpm run deployでサクッとデプロイできます。

おわり!

実は私のWebページはほとんどCloudflare Pagesで動いています。(このブログもそうです)

そして、費用は一切かかっていません。サーバーレスでここまで出来る時代がやってきています。素晴らしい!

興味があるなら、試してみる価値は十分にあります。ぜひやってみてください!