Я знаю, что esm2015 относится к модулям ecmascript, описанным в спецификации ecmascript 2015 (раздел модулей)
В некоторых библиотеках под node_modules/ я вижу рядом с каталогом esm2015/ еще один, который называется fesm2015/.





Это часть формата пакета Angular.
FESM — сокращение от Flattened ES Modules, состоит из формата файла создан путем сведения всех модулей ES, доступных из точки входа в единый модуль ES.
Спецификация, по-видимому, находится в этом документе Google:
https://docs.google.com/document/d/1CZC2rcpxffTDfRDs6p1cfbmKNLA6x5O-NtkJglDaBVs
Больше информации:
Мы настоятельно рекомендуем оптимизировать артефакты сборки перед публикация ваших артефактов сборки в npm путем выравнивания модулей ES. Это значительно сокращает время сборки приложений Angular, поскольку а также время загрузки и анализа окончательного пакета приложений. Пожалуйста, ознакомьтесь с отличным постом "Стоимость малых модулей" от Нолан Лоусон.
Компилятор Angular поддерживает создание индексных файлов модулей ES, которые затем можно использовать для выравнивания модуля с помощью таких инструментов, как Rollup, в результате формат файла мы называем Flattened ES Module или FESM.
FESM — это формат файла, созданный путем сведения всех доступных модулей ES. из точки входа в единый модуль ES. Он формируется путем следования весь импорт из пакета и копирование этого кода в один файл при сохранении всего общедоступного экспорта ES и удалении всех частных импорт.
Сокращенное название «ФЭСМ» (произносится как «фесом») может иметь номер после него, например, «FESM5» или «FESM2015». Номер относится к уровень языка JavaScript внутри модуля. Итак, файл FESM5 будет ESM+ES5 (операторы импорта/экспорта и исходный код ES5).
Чтобы создать сглаженный индексный файл модуля ES, используйте следующий параметры конфигурации в файле tsconfig.json:
{ "compilerOptions": {
...
"module": "es2015",
"target": "es2015",
... }, "angularCompilerOptions": {
...
"flatModuleOutFile": "my-ui-lib.js",
"flatModuleId": "my-ui-lib" } }
Как только индексный файл (например, my-ui-lib.js) сгенерирован ngc, упаковщики и оптимизаторы, такие как Rollup, могут использоваться для создания сглаженного ESM. файл.
Например, docs.google.com/document/d/… это сглаженный (т.е. в один файл) модуль ES (т.е. с использованием синтаксиса импорта/экспорта).