Переход с CommonJS на ESM
Модули на основе require()
и module.exports
(CommonJS) — устаревающий формат. Современный стек (включая Node.js) постепенно переходит на ESM (ECMAScript Modules), который стал официальным стандартом.
Зачем рассматривать переход:
- ESM поддерживается во всех современных сборщиках
- даёт доступ к
import/export
,top-level await
,tree-shaking
- новые API Node.js, например
import.meta
, ориентированы на ESM - всё больше библиотек публикуются только в ESM-формате
Подробнее: antfu.me/posts/move-on-to-esm-only
Подробная инструкция по миграции от sindresorhus
Для постепенного перехода можно включить правило prefer-module из eslint-plugin-unicorn
.
⚠️ Переход на ESM может быть затруднён, особенно в CLI-приложениях и проектах где используются зависимости, которые давно не обновлялись. В таких случаях лучше придерживаться CommonJS до появления стабильной поддержки.
ESM — направление развития платформы. Если проект позволяет — стоит начинать миграцию. Но для некоторых типов приложений переход пока может быть преждевременным.