Для чего нужно поле «модуль» package.json?


111

Я видел, как некоторые пакеты npm ( например, vue ) имеют pkg.moduleполе в package.json. Это "module"официальное свойство npm или это какое-то соглашение? Есть где-нибудь документация по этому поводу? Для чего это? esnext путь? Разделенный путь модуля?


2
соглашение для модулей ECMAScript - вот хорошее прочтение о различных подходах к идентификации ESM: hackernoon.com/…
hackerrdave

Ответы:


118

Это "module"официальное свойство npm или это какое-то соглашение?

Это предложение , но, вероятно, будет поддержано из-за фактического использования.

Есть где-нибудь документация по этому поводу?

На самом деле он есть, и его можно найти здесь, а потом удалить здесь .

Для чего это?

Взаимодействие модулей ES6 в Node. Дополнительное обсуждение можно найти здесь и здесь . И вот сообщение в блоге Рича Харриса, в котором говорится об этом подробнее.


1
Есть ли у WebPack где-нибудь документация по этому поводу или просто Rollup?
tech4him

1
Похоже, они добавили его сюда: webpack.js.org/guides/author-libraries/#final-steps
tech4him

43

Это используется инструментами сборщика для обнаружения ESM (модуль ECMAScript). В документации Rollup это хорошо сказано:

Если в вашем package.jsonфайле также есть moduleполе, инструменты, поддерживающие ES6, такие как Rollup и webpack 2, будут напрямую импортировать версию модуля ES6 .

Эта статья о Rollup 1.0 говорит об этом иначе:

Это mainполе гарантирует, что пользователи Node requireбудут обслуживать версию UMD. Это moduleполе не является официальной функцией npm, а является общим соглашением между сборщиками, определяющим, как импортировать ESM-версию нашей библиотеки.

Дальнейшее обсуждение pkg.moduleнаходится в Rollup Github Wiki и в документации webpack .


1
Должна mainбыть уменьшенная версия библиотеки UMD? Или он должен быть неуминированным? О чем module? Я предполагаю, что этот модуль не следует минифицировать, потому что пользователь будет использовать его сборщик (Webpack, Parcel и т. Д.), И, используя исходный файл с экспортом модуля ES6, сборщик может обрабатывать дерево, правильно?
tonix
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.