言語を選択
durumis AIが要約した文章
- Next.jsでは、.envはビルド時に設定されますが、ビルド後に運用環境(local、dev、qa、prod)に応じて環境変数を 設定する必要がある場合があります。
- Windowsユーザーは従来のUnixベースのスクリプトを使用できないため、cross-envをインストールしてWindowsとUnix環境の両方で動作する スクリプトを作成する必要があります。
- startおよびdevコマンドにcross-envを適用して環境変数を設定し、スクリプトを簡潔に整理して可読性を向上させました。
Next.jsで.envはビルド時にハードコーディングされます。
しかし、ビルド時ではなく、ビルドされたイメージを起動したときにenvを設定したいニーズはたくさんあります。
通常はlocal、dev、qa、prodのように扱われるからです。
では、どうやってそれを実現できるのでしょうか?
ほとんどの場合、以下の記事とほぼ同じです。
しかし、上記の記事はWindowsを排除しています。
package.jsonのスクリプトにUnix構文を記述していることからわかります。
汚いUnixを使わない、清廉潔白で、きれい好きで思いやりのあるWindowsユーザーは、上記スクリプトを使用できません。
そのため、きれい好きで思いやりのあるWindowsユーザーは、Unixユーザーに配慮して、2つのOSで正常に動作するスクリプトを代わりに挿入する必要があります。
解決方法は簡単です。
上記の構文と同じ動作をするスクリプトを挿入すればいいのです。
上記のコマンドでcross-envをインストールします。
そして、上記で述べたstartコマンドを以下のように修正すれば解決です。
しかし、スクリプトが長すぎて見づらい上に、devコマンドにも貼り付けなければなりません。
{
"dev": "npm run _env:-local && next dev",
"dev:dev": "npm run _env:dev && next dev",
"start": "npm run _env:-local && next start",
"_env:-local": "cross-env-shell node ./utils/cli.js next-env -e $APP_ENV",
"_env:dev": "node ./utils/cli.js next-env -e dev"
そこで、私は上記のようにまとめました。