Я видел несколько пакетов npm (vue, например), в поле package.json есть поле pkg.module
. Является ли "module"
официальной собственностью npm или это какое-то соглашение? Есть документация для этого где-то? Для чего это? esnext путь? Разделенный путь модуля?
Что такое поле module.json для модуля?
Ответ 1
Является ли
"module"
официальным свойством npm или это соглашение какого-то рода?
Это предложение, но, вероятно, будет поддержано из-за фактического использования.
Есть ли где-нибудь документация для этого?
Существует, на самом деле, и это можно найти прямо здесь, а затем удалить здесь.
Для чего это?
Функциональная совместимость модуля ES6 в узле. Дополнительное обсуждение можно найти здесь и здесь. И здесь сообщение в блоге от Рича Харриса, говорящее больше об этом.
Ответ 2
Это используется инструментами связывания для обнаружения ESM (модуля ECMAScript). Документация свертывания говорит это довольно хорошо:
Если в вашем файле
package.json
также есть полеmodule
, инструменты с поддержкой ES6, такие как Rollup и webpack 2, напрямую импортируют версию модуля ES6.
Эта статья о Rollup 1.0 говорит об этом иначе:
main
поле гарантирует, что пользователи Node, использующиеrequire
будут обслуживаться версией UMD. Полеmodule
- это не официальная функция npm, а распространенное соглашение между сборщиками, указывающее, как импортировать ESM-версию нашей библиотеки.
Дальнейшее обсуждение pkg.module
приведено на Rollup Github Wiki и в документации для веб-пакетов.