generated at
tsconfigのmoduleResolution
module specifierをどう解決するかを制御する
以下2つをどのように紐づけるかという話
import 等で指定されているpath (module specifier)と
実際のディスク上のファイル
runtimeや、bundlerのmodule resolverに合わせて設定する必要がある

重要なこと
デフォルト値はtsconfigのmoduleの値によって変わる


こっちを先に読んだほうがいいかも

TypeScriptのプロジェクトは登場する拡張子がやたらある
.js , .ts , .d.ts
.mjs , .mts , .d.mts
.cjs , .cts , d.cts
jsx , .tsx
この辺をどのように解決するかというのを制御している



選択肢
node16
module: node16と一致する
つまり、Node.js側の設定を参照する
projectをNative ESMにするためにはこれを指定する
nodenext
2024/4現在は node16 と同じ
bundler
あんまりよくわかっていないmrsekut
Webpackなどのbundlerで使用されるmodule解決の挙動を再現する
何らかのBundlerを使うことが前提になっている
tsconfigのmodule esnext に設定する必要がある
>Node.js v12では、npmパッケージをインポートするための新しいモジュール解決機能(package.jsonの "exports "フィールドと "imports "フィールド)が導入され、多くのバンドルがESMインポートのより厳格なルールを採用することなく、これらの機能を採用しました。 ref
TypeScript v5.0で入った
----↓基本使わなそう-----
node10
以前は node だった
tsconfigのmodule commonjs のときのデフォルト
Node.js v12以前のmodule解決の挙動を再現する
v12以前の挙動をするので、package.jsonのtypepackage.jsonのexportsは無視される
classic
TypeScriptの最も古いモジュール解決モード
tsconfigのmodule commonjs node16 nodenext 以外のときのデフォルト
新規プロジェクトでは基本的に使用しない


参考
丁寧な解説