process.env.NODE_ENV === 'test' かどうかを先にチェックtrue → mode = 'test'(dev 引数の値に関わらず test 優先)test でなければ、引数 dev の真偽で分岐dev === true → mode = 'development'dev === false(またはundefined) → mode = 'production'dev 引数と NODE_ENV がどう決まるか| 呼び出し元 | dev 引数 | NODE_ENV |
|---|---|---|
next dev 実行時 | BaseServer に dev: 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 。