Как стать автором
Поиск
Написать публикацию
Обновить

Создаём современные npm-пакеты и преодолеваем трудности совместимости ESM и CJS

Уровень сложностиПростой
Время на прочтение16 мин
Количество просмотров6K
Всего голосов 23: ↑22 и ↓1+23
Комментарии6

Комментарии 6

С ноды 20.не_помню_минор (в 22 тоже) есть экспериментальная опция загрузки esm через require. А так согласен, что гемор полный. Особенно когда тебе на выходе еще и бинарник получить надо. Всякие pkg начинают глючить.

Ага, действительно, в 20ке появилось с версии 20.17

Имхо, но статья через чур перегружена. Есть шпаргалка, где какой формат лучше использовать?

Согласен, что в статье много все. Если совсем кратко про формат поставляемых файлов, то такая шпаргалка получится:

  • Вопрос: есть потребители библиотеки, которым принципиален CJS формат?

    • нет: используйте сетап "ESM Pure"

    • да: используйте сетап "CJS Compat"

Спасибо, было интересно!

Пилю свою либу, сделал пока методом проб и ошибок и скорей всего не правильно, но вроде работет :) Надо будет пройтись по вашим шаблонам и еще проверить импорт в другой либе.

Мне все это видится так, как наверное и вам. Любая либа всегда должна поставляться как минимум в форме Pure ESM ESNext. Потому что клиенту может понадобиться скомпилировать ее уже под свою конкретную платформу и важно иметь максимально оригинальный и стандартный код. Мы конечно тоже можем компилировать под все возможные варианты платформ и типов модулей, но это уже дополнительный плюшки.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий