テンプレートとスタック
create-remix
を使用して新しいプロジェクトを生成する場合、すぐに開発を開始するためのテンプレートまたはスタックを選択できます。テンプレートは、開発を始めるための最小限の出発点です。スタックは、より完成度が高く、本番環境に近いアーキテクチャ(テスト、データベース、CI、デプロイ構成など)を含むテンプレートです。
テンプレート
--template
オプションを指定せずに create-remix
を実行すると、Remix App Server を使用する基本的なテンプレートが生成されます。
TypeScript を使用しない場合は、代わりにシンプルな Javascript テンプレートをインストールできます。
これは、Remix を初めて試す場合に最適な出発点です。この出発点を自分で拡張したり、後でより高度なテンプレートに移行したりすることができます。
公式テンプレート
サーバーをより詳細に制御したい場合や、Arc、Cloudflare、Deno などのノード以外のランタイムにデプロイする場合は、Remix リポジトリから公式テンプレート のいずれかを使用できます。
サードパーティテンプレート
一部のホスティングプロバイダーは独自の Remix テンプレートを管理しています。詳細については、以下に示す公式統合ガイドを参照してください。
例
さまざまな Remix の機能、パターン、ツール、ホスティングプロバイダーなどを示す、コミュニティ主導の例のリポジトリ も提供しています。これらの例は、動作中の例をインストールする場合と同様に使用できます。
スタック
テンプレートが本番環境対応のアプリケーションに近づき、CI/CD パイプライン、データベース、ホスティングプラットフォームに関する意見を提供するようになった場合、Remix コミュニティではこれらのテンプレートを「スタック」と呼びます。
公式のスタックがいくつか提供されていますが、自分で作成することもできます(以下を参照)。
機能発表のブログ記事を読む と YouTube で Remix スタックのビデオを見る。
公式スタック
公式のスタックには、本番環境のアプリケーションに必要な一般的なものが用意されています。
- データベース
- 自動デプロイパイプライン
- 認証
- テスト
- リンティング/フォーマット/TypeScript
残りは、Remix を使用して構築したい素晴らしいウェブエクスペリエンスを構築するだけです。これが公式のスタックです。
- The Blues Stack: 長時間実行される Node.js サーバーと PostgreSQL データベースを使用して、エッジにデプロイ(分散)されます。何百万人ものユーザーにサービスを提供する大規模で高速な本番環境対応のアプリケーション向けです。
- The Indie Stack: 長時間実行される Node.js サーバーと永続的な SQLite データベースにデプロイされます。このスタックは、あなたが管理する動的なデータ(ブログ、マーケティング、コンテンツサイト)を持つウェブサイトに最適です。また、MVP、プロトタイプ、概念実証に最適な低複雑なブートストラップで、後で Blues スタックに簡単に更新できます。
- The Grunge Stack: 永続性のために DynamoDB を使用して、Node.js を実行するサーバーレス関数にデプロイされます。何百万人ものユーザーにサービスを提供する AWS インフラストラクチャに本番環境対応のアプリケーションをデプロイしたい場合に適しています。
これらのスタックは、create-remix
を実行するときに --template
オプションを指定することで使用できます。例を以下に示します。
はい、これらは音楽ジャンルにちなんで名付けられています。🤘 Rock on.
コミュニティスタック
コミュニティスタックは、create-remix
を実行するときに --template
オプションに GitHub のユーザー名/リポジトリの組み合わせを渡すことで使用できます。例を以下に示します。
その他の情報
プライベートテンプレート
テンプレートがプライベートの GitHub リポジトリにある場合は、--token
オプションを使用して GitHub トークンを渡すことができます。
ローカルテンプレート
ディスク上のローカルディレクトリまたは tarball を --template
オプションに指定できます。例を以下に示します。
カスタムテンプレートのヒント
依存関係のバージョン
package.json
で依存関係を *
に設定した場合、Remix CLI はそれをインストールされた Remix バージョンの semver カレットに変更します。
これにより、テンプレートをその特定のパッケージの最新バージョンに定期的に更新する必要はありません。もちろん、パッケージのバージョンを手動で管理したい場合は、*
を入力する必要はありません。
イニシャライゼーションをカスタマイズする
テンプレートのルートに remix.init/index.js
ファイルがある場合、そのファイルはプロジェクトが生成され、依存関係がインストールされた後に実行されます。これにより、テンプレートの初期化の一部として必要なことをすべて実行できます。たとえば、Blues スタックでは、app
プロパティはグローバルに一意である必要があります。そのため、remix.init/index.js
ファイルを使用して、作成されたプロジェクトのディレクトリ名とランダムな文字を組み合わせた名前に変更します。
remix.init/index.js
を使用して、開発者に追加の構成に関する質問をさらに尋ねることができます(inquirer などを使用)。場合によっては、これを実行するために依存関係をインストールする必要がありますが、これらの依存関係は初期化時にのみ役に立ちます。その場合、依存関係を含む remix.init/package.json
を作成することもできます。Remix CLI は、スクリプトを実行する前にそれらをインストールします。
初期化スクリプトが実行されると、remix.init
フォルダーは削除されるため、完成したコードベースを混乱させる心配はありません。
remix.init
スクリプトの実行をオプトアウトできます。手動でオプトアウトするには、remix init
を実行する必要があります。