Skip to content

Переход с 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 — направление развития платформы. Если проект позволяет — стоит начинать миграцию. Но для некоторых типов приложений переход пока может быть преждевременным.