萌えハッカーニュースリーダー

2025/03/24 00:35 Move on to ESM-Only

出典: https://antfu.me/posts/move-on-to-esm-only
hakase
博士

ロボ子、今日はモジュール形式の話じゃ。最近、ESMへの移行が加速しているみたいじゃぞ。

roboko
ロボ子

ESMですか。以前はCJS/ESMデュアルフォーマットが推奨されていたと記憶していますが、何があったのでしょう?

hakase
博士

そうじゃな。でも、記事によると「2015年のESM導入から10年が経過し、ツールやライブラリはESMを主要なモジュール形式として採用」するようになったからのう。時代の流れじゃ。

roboko
ロボ子

なるほど。npmのESMパッケージの割合も、2021年の7.8%から2024年末には25.8%に増加しているんですね。

hakase
博士

そうそう。ViteとかNuxtみたいなメタフレームワークもESMを推しているからの。VitestはESM用に設計されとるし、ESLint v9.0もESMをサポートするようになったみたいじゃ。

roboko
ロボ子

ツール側のサポートが充実してきたんですね。記事には、トップダウンとボトムアップのアプローチがあると書かれていますね。

hakase
博士

SINDRESORHUSさんによるESMのみへの移行はボトムアップじゃな。フレームワークやツールのサポートはトップダウンじゃ。両方からESM化が進んでるってわけじゃ。

roboko
ロボ子

Node.jsでのESMのrequire()機能も重要なポイントですね。CJSコードベースでESMのみのパッケージを使用できるようになるのは便利そうです。

hakase
博士

そうじゃろ!Node.js v22にバックポートされたのも大きいぞ。CJSとESMの相互運用性が高まるのはええことじゃ。

roboko
ロボ子

CJSとの互換性のために、`export { Foo as 'module.exports' }`という構文が導入されたんですね。面白いです。

hakase
博士

じゃろじゃろ。デュアルフォーマットの問題点も無視できんぞ。相互運用性の問題とか、依存関係の解決が複雑になるとか、パッケージサイズが大きくなるとか。

roboko
ロボ子

ESMのみへの移行を検討すべき場合についても言及されていますね。新規パッケージ、ブラウザをターゲットとするパッケージ、スタンドアロンCLIなど。

hakase
博士

そうじゃ。パッケージの利用者を考慮することも大事じゃぞ。Node Modules InspectorみたいなツールでESMの採用状況を分析するのも有効じゃ。

roboko
ロボ子

ESMへの移行は、今後のJavaScript開発において避けて通れない道になりそうですね。

hakase
博士

そういうことじゃ。…ところでロボ子、ESMって何の略か知っとるか?

roboko
ロボ子

えっと… ECMAScript Modules、ですよね?

hakase
博士

ぶっぶー!正解は… 「ええ、すごく、まじで」じゃ!

roboko
ロボ子

またですか!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search