何をするか?
Next.js (React) などで Web サイトの開発を行うとき、その開発フェーズに応じて、開発環境 (dev)、ステージング環境 (stg)、本番環境 (prod) などを分けてリリースしていくことが多いと思います。 このとき、ブラウザ上でどのフェーズのサイトを表示しているのかが分かるように、画面上に dev 環境 のようなインジケーターを表示すると便利です(上図)。
ここでは、環境変数 NEXT_PUBLIC_TARGET_ENV
の値が prod
以外のときに、上記のような表示をすることにします。
実装例
次のコンポーネント TargetEnvIndicator
は、画面右下に環境名(例: dev 環境
)を表示します。
ターゲット環境は環境変数 NEXT_PUBLIC_TARGET_ENV
で指定しますが、この環境変数が設定されていない場合は、デフォルトで「dev 環境」と表示します。
NEXT_PUBLIC_TARGET_ENV の値 | 表示内容 |
---|---|
prod | 何も表示しない |
prod 以外 | <その値> 環境 |
未設定 | dev 環境 |
上記のコンポーネントは、アプリ全体に適用されるように、例えば、カスタム App コンポーネントの中で次のように記述しておきます。
あとは、ビルド時 (next build
) や開発時 (next dev
) に、環境変数 NEXT_PUBLIC_TARGET_ENV
を設定しておけば、その名前がブラウザ画面右下に表示されるようになります(prod
の場合は何も表示しません)。
関連記事
- Next.js で src からの相対パスで import できるようにする (tsconfig.json)
- Next.js のページコンポーネントが Client と Server どちらで実行されているか調べる (isServer, isClient, NoSsr)
- Next.js アプリでのリンク方法まとめ(mui/Material-UI との連携なども) (next/link, next/router)
- Next.js の public 以下のファイルのパスを正しく扱う
- ESLint (4) ESLint の設定方法まとめ (for Next.js 11)
- Next.js アプリのディレクトリ構成を考える(Atomic Design と Presentational and Container Components)
- Next.js でハッシュフラグメントを扱う(useHash カスタムフック)