Closed16

Turborepo で Remix + Hono を試す

薄田達哉 / tatsuyasusukida薄田達哉 / tatsuyasusukida

package.json の編集

apps/backend/package.json(追記変更)
{
  "name": "@repo/backend",
  "exports": {
    ".": "./src/index.ts"
  },
}
apps/frontend/package.json(追記変更)
{
  "name": "@repo/frontend",
  "dependencies": {
    "@repo/backend": "*"
  }
}
コマンド
pnpm i
薄田達哉 / tatsuyasusukida薄田達哉 / tatsuyasusukida

コーディング

apps/backend/src/index.ts
import { Hono } from "hono";
import { cors } from "hono/cors";

const app = new Hono().use(cors()).get("/", (c) => {
  return c.text("Hello Hono!");
});

export default app;
export type AppType = typeof app;
薄田達哉 / tatsuyasusukida薄田達哉 / tatsuyasusukida

コーディング

apps/frontend/app/routes/_index.ts
import type { MetaFunction } from "@remix-run/cloudflare";
import type { AppType } from "@repo/backend";
import { hc } from "hono/client";

export const meta: MetaFunction = () => {
  return [
    { title: "New Remix App" },
    { name: "description", content: "Welcome to Remix!" },
  ];
};

export default function Index() {
  const onClick = async () => {
    const client = hc<AppType>("http://localhost:8787");
    const response = await client.index.$get();
    const text = await response.text();
    console.log(text);
  };

  return (
    <div>
      <h1>Turbo Remix Hono</h1>
      <button onClick={onClick}>Test</button>
    </div>
  );
}
薄田達哉 / tatsuyasusukida薄田達哉 / tatsuyasusukida

pnpm か npm か

npm だと Remix が起動できないケースがあったので、pnpm を使っておく方が安牌かも知れない。

薄田達哉 / tatsuyasusukida薄田達哉 / tatsuyasusukida

関係ないけど環境変数

Remix on Cloudflare Workers ではどうやって環境変数を取得すれば良いのかな?

とりあえず今わかっている方法は下記の通り↓

  1. wrangler.toml に [vars] セクションを追加
  2. pnpm --filter frontend typegen を実行
  3. loader 関数で context.cloudflare.env からアクセス可能
薄田達哉 / tatsuyasusukida薄田達哉 / tatsuyasusukida

開発環境と本番環境で分ける

本番環境の値は wrangler.toml の vars セクションに書いておき、開発環境の値は .dev.vars ファイルに書いておけば良さそう。

機密性の高い情報については wrangler secret put key` を使えば良さそうだ。

https://developers.cloudflare.com/workers/configuration/environment-variables/

もっと細かく制御したい場合は environments の仕組みを使えば良さそうだ。

https://developers.cloudflare.com/workers/wrangler/environments/

薄田達哉 / tatsuyasusukida薄田達哉 / tatsuyasusukida

おわりに

まだほんの触りだけど TurboRepo を使って Remix Frontend と Hono Backend の 2 つのアプリからなるモノレポプロジェクトの作り方がわかったのでこれで終わりとしよう。

https://github.com/yusukebe/hono-react-router-adapter

こちらを使いたかったが自分がやった時は動かなかったのと、まだ unstable なこともあるので、Remix 上で Hono が安定的に動かせるようになるまではこの構成で開発しよう。

このスクラップは2025/01/28にクローズされました