🔥

Hono+SSGなWebサイトをCloudflare Pagesでデプロイするまでのメモ

2024/05/26に公開

honoもCloudflare Pagesもbunも何もわからない状態からHello Worldするまでの備忘録

参考にしたもの

https://tkancf.com/blog/blog-migration-astro-to-hono

https://hono.dev/helpers/ssg

https://github.com/honojs/vite-plugins/tree/main/packages/ssg

https://github.com/yusukebe/hono-ssg-example/tree/main

Bunのインストール

https://bun.sh/docs/installation

brew install oven-sh/bun/bun

プロジェクトの作成

https://hono.dev/getting-started/cloudflare-pages

bunx create-hono my-app

templateを聞かれるので、cloudflare-pagesを選択

SSGの実装

pluginのインストール

bun add vite @hono/vite-ssg

/vite.config.tsを書き換える

import ssg from '@hono/vite-ssg'
import { defineConfig } from 'vite'

const entry = 'src/index.tsx'

export default defineConfig({
  plugins: [ssg({ entry })]
})

src/index.tsxを書き換える

import { Hono } from 'hono'

// index.tsx
const app = new Hono()

app.get('/', (c) => c.html('Hello, World!'))
app.use('/about', async (c, next) => {
  c.setRenderer((content, head) => {
    return c.html(
      <html>
        <head>
          <title>{head.title ?? ''}</title>
        </head>
        <body>
          <p>{content}</p>
        </body>
      </html>
    )
  })
  await next()
})
app.get('/about', (c) => {
  return c.render('Hello!', { title: 'Hono SSG Page' })
})

export default app

./package.jsonのscripts部分を書き換える

"scripts": {
    "dev": "vite",
    "build": "vite build",
    "preview": "wrangler pages dev ./dist",
    "deploy": "$npm_execpath run build && wrangler pages deploy ./dist --commit-dirty=true"
}

Cloudflareの設定

https://dash.cloudflare.com/

左側のペインの"Workers & Pages"→"Overview"からダッシュボードを開く
alt text

Create application
alt text

先ほどpushしたリポジトリと接続
alt text

alt text

Build設定
alt text

これでデプロイ完了。Hello Worldが表示されていることを確認できる。

以降は、GitHubにpushすると自動的にデプロイされる。
mainブランチへpushすると、Production、それ以外のブランチへpushすると、Preview環境へデプロイ。

手動デプロイ

ローカルからもdeployコマンドでデプロイできる。

bun run deploy

GitHubからのデプロイと同様に、チェックアウトしているブランチによって、デプロイ先の環境が変わる。

Discussion