Do czego służy pole „module” package.json?

111

Widziałem, że niektóre pakiety npm ( na przykład vue ) mają pkg.modulepole w swoim package.json. Czy jest "module"to oficjalna własność npm, czy jest to jakaś konwencja? Czy jest gdzieś dokumentacja? Do czego to służy? następna ścieżka? Unbundled module path?

ryanve
źródło
2
konwencja modułów ECMAScript - oto dobra lektura na temat różnych podejść do identyfikowania ESM: hackernoon.com/ ...
hackerrdave

Odpowiedzi:

118

Czy jest "module"to oficjalna własność npm, czy jest to jakaś konwencja?

To propozycja , ale prawdopodobnie będzie obsługiwana ze względu na faktyczne użycie.

Czy jest gdzieś dokumentacja?

W rzeczywistości jest i można go znaleźć tutaj, a później usunąć tutaj .

Do czego to służy?

Interoperacyjność modułu ES6 w węźle. Dodatkową dyskusję można znaleźć tutaj i tutaj . A oto post na blogu Richa Harrisa, który mówi o tym więcej.

Josh Habdas
źródło
1
Czy WebPack ma gdzieś dokumentację na ten temat, czy tylko pakiet zbiorczy?
tech4him
1
Wygląda na to, że dodali go tutaj: webpack.js.org/guides/author-libraries/#final-steps
tech4him
43

Jest to używane przez narzędzia bundlerów do wykrywania ESM (ECMAScript Module). Dokumentacja Rollup mówi, że całkiem dobrze:

Jeśli package.jsonplik ma również modulepole, narzędzia obsługujące ES6, takie jak Rollup i Webpack 2 , zaimportują bezpośrednio wersję modułu ES6 .

Ten artykuł na temat Rollup 1.0 mówi o tym w inny sposób:

To mainpole zapewnia, że ​​użytkownicy węzła korzystający z węzła requireotrzymają wersję UMD. To modulepole nie jest oficjalną funkcją npm, ale powszechną konwencją wśród bundlerów, która określa sposób importowania wersji ESM naszej biblioteki.

Dalsza dyskusja na temat pkg.modulejest na Rollup Github Wiki i dokumentach pakietu internetowego .

Jack Steam
źródło
1
Czy powinna to mainbyć zminimalizowana wersja biblioteki UMD? A może powinien być niezminimalizowany? O co chodzi module? Wydaje mi się, że ten moduł nie powinien być zminimalizowany, ponieważ użytkownik użyje jego bundlera (Webpack, Parcel, itp.) I używając pliku źródłowego z modułem ES6 eksportuje pakiet bundler może spowodować drżenie drzewa, prawda?
tonix