NODE_ENV=productionにすると yarn installしたときにdevDependenciesはインストールされなくなる

薄い知識で適当にやってたらはまった。

NODE_ENVはnodejsの実行モードを切り替える環境変数でいろいろなところで使われているようだ。おそらくサーバーの実行モードも制御している。

yarn buildしたとき、NODE_ENVを設定しない状態ならビルドが通っていたのが、Dockerfileの中で NODE_ENV=production を指定するとビルドが通らなくなってしまった。 (実際にはこれが原因ということに気づかず、Dockerだからかな?とかMacLinuxの違いかな?とかそっちばかり考えて(そんなわけないのだが)はまってしまっていた。

結論、 NODE_ENV=production とした状態で、 yarn install すると、package.jsonにあるdevDependenciesをインストールしなくなる。

yarn install | Yarn

Yarn will not install any package listed in devDependencies if the NODE_ENV environment variable is set to production.

devDependenciesに(誤って)入っていて、ビルドに必要なライブラリをdependenciesのほうに移して、無事解決。