クイックスタート
このガイドでは、Remix アプリをできるだけ早く実行するために必要な基本的な仕組みについて説明します。さまざまなランタイム、デプロイターゲット、データベースを備えた多くのスターターテンプレートがありますが、ここでは、ゼロから必要最低限のプロジェクトを作成します。
Remix プロジェクトに本格的に取り組む準備ができたら、コミュニティテンプレートから始めることを検討するとよいでしょう。これらには、TypeScript の設定、データベース、テストハーネス、認証などが含まれています。コミュニティテンプレートのリストは、Remix リソースページで確認できます。
インストール
すぐに使える Remix プロジェクトを初期化したい場合は、create-remix
CLI を使用できます。
ただし、このガイドでは、CLI がプロジェクトをセットアップするために行うすべてのことを説明します。CLI を使用する代わりに、以下の手順に従うことができます。Remix を使い始めたばかりの場合は、Remix アプリを構成するさまざまな要素を理解するために、このガイドに従うことをお勧めします。
Vite 設定
Remix は Vite を使用するため、Remix Vite プラグインを含む Vite 設定 を提供する必要があります。以下は、必要な基本的な設定です。
ルートルート
app/root.jsx
は、いわゆる「ルートルート」です。これは、アプリ全体のルートレイアウトです。以下は、すべてのプロジェクトに必要な基本的な要素のセットです。
ビルドと実行
まず、本番環境用にアプリをビルドします。
これで、build
フォルダーに、server
フォルダー(アプリのサーバーバージョン)と、いくつかのビルド成果物を含む client
フォルダー(ブラウザーバージョン)が表示されるはずです。(これはすべて設定可能です。)
👉 remix-serve
でアプリを実行する
まず、remix-serve
がアプリを実行できるように、package.json
で型をモジュールとして指定する必要があります。
これで、remix-serve
でアプリを実行できます。
http://localhost:3000 を開いて、「hello world」ページが表示されるはずです。
node_modules
にある膨大な量のコードを除けば、Remix アプリは 1 つのファイルだけです。
├── app/
│ └── root.jsx
└── package.json
└── vite.config.js
独自のサーバーを持ち込む
remix vite:build
によって作成された build/server
ディレクトリは、Express、Cloudflare Workers、Netlify、Vercel、Fastly、AWS、Deno、Azure、Fastify、Firebase などのサーバー内で実行するモジュールにすぎません。
独自のサーバーをセットアップしたくない場合は、remix-serve
を使用できます。これは、Remix チームが管理するシンプルな Express ベースのサーバーです。ただし、Remix は、スタックを所有できるように、あらゆる JavaScript 環境で実行するように特別に設計されています。多くの(ほとんどではないにしても)本番アプリには独自のサーバーがあることが予想されます。これについては、ランタイム、アダプター、スタックで詳しく読むことができます。
試しに、remix-serve
の使用を停止して、代わりに Express を使用してみましょう。
👉 Express、Remix Express アダプター、および本番モードで実行するための cross-env をインストールする
👉 Express サーバーを作成する
👉 Express でアプリを実行する
これでサーバーを所有したので、サーバーが持つツールを使用してアプリをデバッグできます。たとえば、Node.js inspect フラグを使用して、Chrome DevTools でアプリを検査できます。
開発ワークフロー
サーバーを常に停止、再構築、起動する代わりに、ミドルウェアモードの Viteを使用して、開発中に Remix を実行できます。これにより、React Refresh(ホットモジュールリプレースメント)と Remix ホットデータ再検証を使用して、アプリの変更に即座にフィードバックできます。
まず、便宜上、package.json
に dev
コマンドと start
コマンドを追加します。これにより、それぞれ開発モードと本番モードでサーバーが実行されます。
👉 package.json
に "scripts" エントリを追加する
👉 Vite 開発ミドルウェアをサーバーに追加する
process.env.NODE_ENV
が "production"
に設定されている場合、Vite ミドルウェアは適用されません。この場合、以前と同様に通常のビルド出力が実行されます。
👉 開発サーバーを起動する
これで、アプリをすぐにフィードバックを得ながら作業できます。試してみて、root.jsx
のテキストを変更して見てください。
サーバーとブラウザーのエントリの制御
Remix が使用しているデフォルトのマジックファイルがあり、ほとんどのアプリでは変更する必要はありませんが、サーバーとブラウザーへの Remix のエントリポイントをカスタマイズしたい場合は、remix reveal
を実行すると、それらがプロジェクトにダンプされます。
エントリファイル entry.client が app/entry.client.tsx に作成されました。
エントリファイル entry.server が app/entry.server.tsx に作成されました。
まとめ
おめでとうございます。Remix を履歴書に追加できます。まとめると、次のことを学びました。
- Remix はアプリを次の 2 つにコンパイルします。
- 独自の JavaScript サーバーに追加するリクエストハンドラー
- ブラウザー用のパブリックディレクトリにある静的アセットの山
- アダプターを使用して独自のサーバーを持ち込み、どこにでもデプロイできます
- HMR が組み込まれた開発ワークフローをセットアップできます
一般的に、Remix は少し「内臓がむき出し」です。数分のボイラープレートですが、これでスタックを所有できます。
次は?