Я создал несколько модулей npm и скомпилировал их в:
- commonJS (используя
exports.default =
) и - esm (используя
export default
)
Я настроил свой package.json так:
main: "index.cjs.js",
module: "index.esm.js"
Когда я установил пакет npm и просто импортировал его, как:
import myPackage from 'my-package'
Он автоматически выберет *Файл 1017 *, а не модуль.
Мой вопрос:
Есть ли способ импортировать файл module
вместо выполнения import myPackage from 'my-package'
в файле JavaScript?
Почему я выбираю файл commonJS для «main»:
Я заметил, что при использовании Node импорт файла esm
невозможен из-за export default
, это должен быть commonJS.У меня есть несколько простых вспомогательных JS-функций, таких как , и , , и я бы хотел, чтобы они были доступны для самой широкой аудитории.Вот почему я выбрал cjs
для "main"
пути в package.json.
Почему я определяю отдельный "модуль" в package.json:
Множество известных библиотек, таких как Vue.JS уже делают это.См. Дополнительную информацию по этому потоку Stackoverflow:
Для чего нужно поле "module" package.json?
Почему я хочу иметь возможность импортировать модуль ""file вместо" main "file:
В Rollup в настоящее время есть ошибка , из-за которой он не будет правильно отображать комментарии JSDoc при кодировании после импорта файла cjs
, но это работает при импорте файла es
.
Обходной путь, которого я хочу избежать:
Просто установите "main" для файла esm
в package.json, право?Но тогда все пользователи, которые используют мои пакеты в приложениях Node, больше не смогут его использовать ...
→ Я действительно смущен всем этим, но я думаю, что провел достаточно исследований, чтобы сделатьсмысл всего этого.При этом, если кто-то знает лучший подход или какой-либо другой совет, пожалуйста, сообщите мне в комментариях ниже !!