Skip to content

refactor: adapter-node から公式の adapter-bun に切り替える - #189

Merged
5ym merged 1 commit into
mainfrom
adapter-bun
Oct 16, 2026
Merged

5ym merged 1 commit into
mainfrom
adapter-bun

Conversation

@5ym

@5ym 5ym commented Oct 16, 2026

Copy link
Copy Markdown
Collaborator

概要

実行環境はもともと Bun(oven/bun イメージ、bun:sqlite)なので、adapter-node を Bun の Node 互換層の上で動かすのをやめ、SvelteKit 公式の @sveltejs/adapter-bun(1.0.0)に切り替えます。

変更

  • @sveltejs/adapter-node を @sveltejs/adapter-bun に置き換え(package.json / bun.lock / vite.config.ts)
  • adapter-bun はビルドを Bun で実行する必要があり、Node で動くと止まるため、build を bun --bun vite build にした
  • 出力は今までと同じ build/index.js なので、Dockerfile の CMD はそのまま
  • PROTOCOL_HEADER / HOST_HEADER / BODY_SIZE_LIMIT / SHUTDOWN_TIMEOUT は adapter-bun も同じ名前で読むので、deployment はコメントだけ直した

補足

🤖 Generated with Claude Code

https://claude.ai/code/session_014FPFCo16TPsUrao9sVBUyi

実行環境はもともと Bun なので、Node 互換層を通さず Bun.serve で
直接動かす。静的ファイルも Bun のネイティブルートで配信される。

- adapter-bun はビルドを Bun で実行する必要があるため、build を
  `bun --bun vite build` にする
- 出力は今までと同じ build/index.js なので Dockerfile はそのまま
- PROTOCOL_HEADER / HOST_HEADER / BODY_SIZE_LIMIT / SHUTDOWN_TIMEOUT は
  adapter-bun も同じ名前で読む

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014FPFCo16TPsUrao9sVBUyi
@claude

claude Bot commented Oct 16, 2026 •

Copy link
Copy Markdown

Claude finished @5ym's task in 20s —— View job


レビュー結果

差分(4ファイル)を確認しました。ブロッカーになる問題は見つかりませんでした。以下は要確認の点です。

問題なし と判断した点

  • package.json / bun.lock / vite.config.ts の置き換えは整合しています。lock のワークスペース宣言と package.json も一致しています。
  • build を bun --bun vite build にした判断は妥当です。Dockerfile の builder ステージは oven/bun なので、そのまま動くはずです。
  • 出力は build/index.js のままで、CMD や COPY --from=builder .../build に影響はありません。
  • adapter はビルド時のみ使う devDependency です。ランタイムの prod-deps が --production でも、出力がバンドル済みなら問題ありません。

要確認

  1. SHUTDOWN_TIMEOUT が adapter-bun 1.0.0 で本当に効くか。 PR 説明では「同じ名前で読む」とありますが、私の手元ではパッケージのソースを確認できていません。deploy/deployment.yaml の terminationGracePeriodSeconds: 45 は、これが効く前提で preStop 5s と合わせて決めた値です。もし未対応だと、SIGTERM 時に処理中のリクエストを待たずに落ちたり、逆に終了しなかったりします。node_modules/@sveltejs/adapter-bun の files/ 内で SHUTDOWN_TIMEOUT が使われているか確認し、コメントを書き換えただけにならないようにしてください。
  2. PROTOCOL_HEADER / HOST_HEADER の挙動。 こちらも adapter-bun の実装で同名の環境変数が読まれ、adapter-node と同じ意味(例: x-forwarded-proto)かを確認してください。ORIGIN や CSRF のオリジン判定に影響するため、リバースプロキシ配下では重要です。
  3. bun.lock を手編集している点。 bun i --frozen-lockfile が通ることが前提です。integrity の値や bun-types@^1.3.14 の解決が lock と食い違うと、Docker の builder ステージで失敗します。マージ前に CI の Docker ビルドが通ることを確認してください。もし失敗するなら、bun が使える環境で bun install して lock を再生成するのが確実です。
  4. BODY_SIZE_LIMIT=100M の書式。 adapter-bun が 100M のようなサフィックス付きの値を解釈するか確認してください(adapter-node は解釈します)。解釈しない場合、アップロード上限が意図せず変わります。

テスト
自動テストの対象外の変更です。上記 1〜4 は静的には確定できないので、ビルド済みイメージを起動し、起動とリクエスト応答、SIGTERM での終了を一度手元で確認することをおすすめします。

@5ym
5ym merged commit 7a09e44 into main Oct 16, 2026
2 checks passed
@5ym
5ym deleted the adapter-bun branch October 16, 2026 16:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant