コンテンツにスキップ
箱庭諸島2 TypeScript 版
Esc
↑↓移動↵開く⌘Jプレビュー
このページの内容

ローカル開発

Node.js の開発サーバーと wrangler dev で、手元でゲームを動かす方法です。

必要なツール

Node.js、pnpm、Vite+ (vp) は mise で管理しています。

mise install
mise exec -- vp install

シェルで mise を有効にしていない場合は、以降のコマンドにも mise exec -- を付けて実行してください。

Node.js の開発サーバー

島の作成やログインにはユーザー認証が必須です。ローカル開発では「開発ログイン」(任意のメールアドレスでログインできる機能) を使うのが手軽です。

cp .env.node.example .env

.env を開き、少なくとも次を確認してください (HAKONIWA_AUTH_SECRET は省略すると自動生成されます)。

  • HAKONIWA_BASE_URL: 公開 URL。開発サーバーは既定で localhost だけを待ち受けるので、省略すると http://localhost:<実際のポート> になります (5173 が使用中なら、Vite が選んだポート)。リクエストの Host ヘッダからは決めません。vp dev --host のようにループバック以外で待ち受けるときは必須で、未設定だと起動前にエラーで終了します。明示したときはその URL を使います
  • HAKONIWA_DEV_LOGIN=true: 開発ログインを有効にする
  • HAKONIWA_ADMIN_EMAILS=自分のメールアドレス: 管理画面 (/admin) に入れるようにする (開発ログインでそのメールアドレスを入力すれば管理者になれる)

mise 経由 (mise exec -- ... や mise activate 済みのシェル) であれば、リポジトリ直下の .env は自動的に読み込まれます。環境変数を変更したときは、開発サーバーを再起動してください。

vp run dev

開発サーバーが http://localhost:5173/ で起動します。初回はゲームがまだ無いので、次のいずれかで開始してください。

  • /login から開発ログインでログインし、/admin で「新しいゲームを開始」を実行する
  • CLI で開始する: vp run --filter ./packages/node cli -- db init

X / Discord ログインを試す場合は、OAuth アプリのコールバック URL に http://localhost:5173/api/auth/callback/twitter (または .../discord) を登録してください (ログイン方法の設定)。メールログインは HAKONIWA_RESEND_API_KEY を設定しない限り、コンソールにリンクを出力するだけです。

データベースのスキーマは起動時に自動でマイグレーションされます。

wrangler dev

ローカル用の設定はリポジトリ直下の .dev.vars に書きます (git 管理外)。.dev.vars.example に任意の secret の例がコメントアウトして書いてあるので、コピーして必要な行を有効にしてください。

cp .dev.vars.example .dev.vars
HAKONIWA_DEV_LOGIN=true
HAKONIWA_ADMIN_EMAILS=you@example.com
pnpm --filter @hakoniwajs/cloudflare dev

.dev.vars を作らずに試す場合は --var オプションでも指定できます。

wrangler dev --port 8787 \
  --var HAKONIWA_DEV_LOGIN:true \
  --var HAKONIWA_ADMIN_EMAILS:you@example.com

ローカルの Durable Object の状態は .wrangler/state (リポジトリ直下) に保存されます。ローカルでは Cron は自動で発火しないため、curl http://localhost:8787/cdn-cgi/local/scheduled で手動で呼び出せます。

CLI

ローカル開発では vp run --filter ./packages/node cli -- <command> でビルドせずに CLI を実行できます。ビルド済みなら node packages/node/dist/cli.js <command> でも同じです。コマンドの一覧は CLI を参照してください。

ドキュメントサイト

このドキュメントサイトは website/ にあります。

cd website
npm install
npm run dev