目的
- 開発速度を上げるためにホットリロードを有効化したい
- 開発環境はDocker(dev container)に閉じ込めたい
結論
以下のいずれか
- Next.js 16でデフォルト有効となっている Turbopack ではなく、 webpack を使う (
next dev --webpack)- ※ ホットリロードは遅い
- WSLを使わない。Docker Desktopの場合、設定から
Use the WSL 2 based engineのチェックを外す - [未検証] WindowsファイルシステムをWSLにマウントしない
調査ログ
- コンテナ環境での開発時にホットリロードを有効化するための設定として、以下(のいずれか)がよく見られる
-
next.config.tsで webpack のwatchOptionsを設定する - 環境変数
WATCHPACK_POLLINGを設定する(≒webpackのwatchOptions設定)- webpack/watchpack: Wrapper library for directory and file watching.
- ※ 昔は
webpack/watchpackではなくchokidarを使っており、環境変数はCHOKIDAR_USEPOLLINGだった-
https://github.com/webpack/watchpack/issues/130#issuecomment-607364798
-
new version uses
watchpackwithoutchokidar
-
-
https://github.com/webpack/watchpack/issues/130#issuecomment-607364798
-
- しかし、2025/10リリースのNext.js 16からwebpackではなくTurbopackがデフォルトで使われるようになり、
webpack/watchpackに依存する、watchOptionsやWATCHPACK_POLLINGは効かなくなった-
https://nextjs.org/docs/app/api-reference/turbopack
-
Turbopack is now the default bundler in Next.js. -
"dev": "next dev", - ※
next dev --webpackでwebpackに戻せる、が、遅かった
-
-
https://nextjs.org/docs/15/app/api-reference/turbopack#getting-started
-
"dev": "next dev --turbopack",
-
-
https://nextjs.org/docs/app/api-reference/turbopack
- Turbopack + WSLでホットリロードが効かないのは、WSL2の問題らしい
- [未検証] WindowsファイルシステムをWSLにマウントしなければ良いらしい
- Turbopackにもファイルをpollingする設定があるらしいが、ドキュメントが無い&壊れている可能性もありそう
