JavaScript は CommonJS と ESM のどちらを使うべきか

CommonJS は昔から Node.js で使われてきたけれど、今はもう少しずつ役目を終えつつある。現在の標準は ES Modules(ESM)で、import / export を使うスタイルが主流になっている。

CommonJS

Node.js で長く使われてきた形式。require() による動的読み込みができて便利だが、ブラウザではそのまま動かない。

ES Modules

ECMAScript の正式仕様。import / export でモジュールを扱い、ブラウザと Node.js の両方で動く。非同期ロードやツリーシェイキングにも対応している。

今の目安をまとめるとこんな感じ。

Node.js 18 以降 → ESM が正式対応(.mjs または package.json の "type": "module")
ブラウザ → ESM が完全標準
Bundler(Rollup, Vite, Webpack など)→ すべて ESM ベース
NPM パッケージ公開 → ESM または dual(CommonJS + ESM)構成が推奨

これから新しく作るなら、基本は ESM にしておくのが安心。ただ、既存のコードやライブラリとの兼ね合いで、CommonJS が混ざることもまだよくある。