フロントエンド開発の先端を突っ走るNext.js
next.js アプリの初期化( npx create-next-app@latest <アプリ名> ) または pnpm create next-app@latest <アプリ名> または bun create next-app <アプリ名> )

nextjs の .env.development などの .env ファイル解決ロジック

● nextjs の .env.development などの .env ファイル解決ロジック

判定ロジック(箇条書き)

  • 1 . 最優先条件: process.env.NODE_ENV === 'test' かどうかを先にチェック
    • truemode = 'test'(dev 引数の値に関わらず test 優先)
  • 2 . 次点条件: test でなければ、引数 dev の真偽で分岐
    • dev === truemode = 'development'
    • dev === false(またはundefined) → mode = 'production'

dev 引数と NODE_ENV がどう決まるか

呼び出し元 dev 引数 NODE_ENV
next dev 実行時 BaseServerdev: true が渡る 4 CLI の preAction フックで未設定なら 'development' にセット 5
next build/next start 実行時 dev: false(デフォルト) 未設定なら 'production' にセット(同じpreActionフック)
テスト実行時(例: Jest, NODE_ENV=test) 任意 NODE_ENV=test が外部から設定されている

つまり NODE_ENV=test が明示的に設定されていれば、next dev を実行していても(dev=trueでも)mode'test' になります。これは .env.local を意図的に除外するための設計です 6

No.2765
07/29 14:08

edit