CJSのprojectをESMに移行する
移行する理由
CommonJSからES Modulesを参照できないから
参考
どこを見れば分かる?一箇所見るだけで分かる?
コード内部の import
/ require
だけ見ても判断できない
例えば、コード上はimportのみを使っていても、babelとかがrequireに変換しているかもしれない
>以下のどちらかに該当すればおそらくNative ESMです。
> package.jsonに "type": "module" の記述があり、拡張子に .js を使っている。
Next.js等を使っているときにどうすればよいのかわからない
普通に考えると、下記の手順のようにやれば良い気がしているが、
type: module
をつけるとライブラリをimportできなくなることがある
#??そんなことあるんだろうか
一部のライブラリを読み込めなくなったけどなんで?
ESMは、ESMもCJSも読み込めるはずだが
package.json
での変更
これは直接的にはESM云々と関係ないはず

ただ、mainは機能が限定的だし、exportsは環境の分岐とかもできるからやっとき、
ぐらいのものだと思う
tsconfig.json
での変更
その他のファイルでの変更
拡張子も含めたimpot文に置き換える
例えば
import x from '.';
を
import x from './index.js';
に変更する
全ての require()/module.export
を import/export
に置き換える
namespace
の使用をやめ、 export
を使用する
ひえー、だるすぎ