Для чого поле "module" package.json?


111

Я бачив, що деякі пакети npm (наприклад, vue ) мають pkg.moduleполе у ​​своєму package.json. Це "module"офіційна власність npm чи це якась конвенція? Чи є десь для цього документація? Для чого це? esnext шлях? Нерозділений шлях модуля?


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

Відповіді:


118

Це "module"офіційна власність npm чи це якась конвенція?

Це пропозиція , але, ймовірно, буде підтримана через фактичне використання.

Чи є десь для цього документація?

Насправді це є, і його можна знайти тут і пізніше тут .

Для чого це?

Інтероперабельність модуля ES6 у вузлі. Додаткову дискусію можна знайти тут і тут . А ось допис у блозі Річа Харріса, який розповідає про це більше.


1
Чи має WebPack документацію про це десь або просто згуртування?
— tech4him

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

43

Це використовується інструментами для постачальників для виявлення ESM (ECMAScript Module). Документація Відомості каже , що це дуже добре:

Якщо ваш package.jsonфайл також має moduleполе, ES6 обізнані інструменти , такі як накопичувальний пакет і WebPack 2 буде імпортувати модуль версії ES6 безпосередньо.

У цій статті про накопичувач 1.0 йдеться про інший спосіб:

mainПоле гарантує , що користувачі вузлів з використанням requireбудуть обслуговуватися версії UMD. moduleПоле не є офіційною межею НПМ , але загальне угоду між Пакувальники для позначення як імпортувати версію ESM нашої бібліотеки.

Подальше обговорення pkg.moduleвідбувається на зведеному Github Wiki та веб- пакеті Документів .


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