Для чого поле "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.