このリポジトリのスターター キットに大まかに基づいて、同形の React アプリを作成しました。本番コードのビルドには webpack を使用します。
つまり、本番コードを再構築せずに、サーバー上のいくつかの環境変数の値をブラウザーのクライアント コードに公開する必要があります。環境変数の値を変更し、何も再構築することなく、次のページの更新時にクライアントに影響を与えたいと考えています。そして、それを行うためにテストを複雑にしたくありません。
私はいくつかの解決策を見つけましたが、どれも素晴らしいものではありません:
- Webpack の DefinePlugin を使用して、特定の環境変数の値を製品コードにハードコーディングします。ここで概説されているものと同様
- 環境変数をクライアントにプルするためだけに API を構築します。
- webpack システムの外部にある特別な .js ファイルを作成します。このファイルは、クライアントに提供される前に変更されるようにテンプレート化されます。おそらく、環境変数の値が「ウィンドウ」などの特別なグローバル変数に格納されている必要があります。
これらのアプローチの問題:
- 拒否されました。これは私が望むことをしません。env 変数の値を変更すると、コードを再構築する必要があります。
- 不必要に複雑。この API は他には必要ありません。めったに変化しない 2 つまたは 3 つの値を提供するためだけの API ですか? ロード時に API からできるだけ早く値が取り出されるようにするには、複雑さが必要になります。
- まだ最も近いですが、ちょっとグロスです。避けられるのであれば、webpack/React/Flux システムの外に出たくありません。ウィンドウ オブジェクトで特別なグローバル変数を作成しても機能しますが、それらのグローバル変数を使用するコンポーネント/ストア/アクションのテストが複雑になります。
私は過去に 2 と 3 の両方を行ったことがありますが、これらのソリューションで本当に知的に満足したことはありません。
助言がありますか?これは一般的な/解決済みの問題のようです。たぶん私はそれを考えすぎているだけで、3が行く方法です.