共有 Mirage サーバーに対する React アプリの開発
Mirage サーバーを一元化し、開発とテストで共有する準備ができたら、以下の手順に従ってください。
ステップ 1: Mirage のインストール
まず、プロジェクトに Mirage を追加済みであることを確認してください。
# Using npm
npm install --save-dev miragejs
# Using Yarn
yarn add --dev miragejs
ステップ 2: 共有サーバーの定義
共有サーバーを定義する一般的な場所は、src/server.js
です。
// src/server.js
import { createServer, Model } from "miragejs"
export function makeServer({ environment = "test" } = {}) {
let server = createServer({
environment,
models: {
user: Model,
},
seeds(server) {
server.create("user", { name: "Bob" })
server.create("user", { name: "Alice" })
},
routes() {
this.namespace = "api"
this.get("/users", (schema) => {
return schema.users.all()
})
},
})
return server
}
Create React App でビルドされたアプリでは、このファイルが
src/
ディレクトリの下にあることを確認して、変更がリビルドをトリガーするようにしてください。
関数シグネチャに追加している environment
引数は、単なる規則です。ほとんどのアプリでは、開発モードでは makeServer
を 1 回呼び出しますが、test
では(さまざまなテストファイル全体で)何度も呼び出すため、デフォルトで test
に設定しています。
シグネチャは自由に好きなように変更できます。
ステップ 3: 開発環境でのサーバーの起動
React アプリのブートストラップファイル(Create React App では src/index.js
)を開き、makeServer
関数をインポートして、開発環境で呼び出します。
// src/index.js
import React from "react"
import ReactDOM from "react-dom"
import App from "./App"
import { makeServer } from "./server"
if (process.env.NODE_ENV === "development") {
makeServer({ environment: "development" })
}
ReactDOM.render(<App />, document.getElementById("root"))
ここでは、多くの React アプリ環境で使用できる一般的なグローバル変数である process.env.NODE_ENV
環境変数を使用しています。この条件により、Mirage は本番環境でツリーシェイクされるため、本番バンドルに影響を与えません。
また、ここでは { environment: "development" }
を渡しているため、Mirage の seeds()
がロードされ、開発中に役立つシミュレートされたレイテンシが発生することに注意してください。
これで完了です。このコードを配置すると、アプリケーションのコンポーネントが開発中にネットワークリクエストを行うたびに、Mirage はそのリクエストをインターセプトし、サーバー定義のデータで応答します。
これで、React アプリのローカル開発を続けながら、Mirage サーバーを定義および更新するための中心的な場所ができました。