CJSのprojectをESMに移行する
移行する理由
CommonJSからES Modulesを参照できないから
参考
どこを見れば分かる?一箇所見るだけで分かる?
コード内部のimport/requireだけ見ても判断できない
例えば、コード上はimportのみを使っていても、babelとかがrequireに変換しているかもしれない
以下のどちらかに該当すればおそらくNative ESMです。
package.jsonに "type": "module" の記述があり、拡張子に .js を使っている。
拡張子に .mjs を使っている。
Next.js等を使っているときにどうすればよいのかわからない
普通に考えると、下記の手順のようにやれば良い気がしているが、
type: moduleをつけるとライブラリをimportできなくなることがある #?? そんなことあるんだろうか
一部のライブラリを読み込めなくなったけどなんで?
ESMは、ESMもCJSも読み込めるはずだが
package.jsonでの変更
これは直接的にはESM云々と関係ないはずmrsekut.icon
ただ、mainは機能が限定的だし、exportsは環境の分岐とかもできるからやっとき、
ぐらいのものだと思う
tsconfig.jsonでの変更
その他のファイルでの変更
拡張子も含めたimpot文に置き換える
例えば
import x from '.';を
import x from './index.js';に変更する
全てのrequire()/module.exportをimport/exportに置き換える
namespaceの使用をやめ、exportを使用する
ひえー、だるすぎ