A cosa serve il campo package.json "module"?


111

Ho visto alcuni pacchetti npm ( vue per esempio ) hanno un pkg.modulecampo nel loro package.json. È "module"una proprietà npm ufficiale o è una convenzione di qualche tipo? C'è documentazione per questo da qualche parte? Per cosa è? percorso successivo? Percorso del modulo non raggruppato?


2
convenzione per i moduli ECMAScript - ecco una buona lettura sui diversi approcci per identificare gli ESM: hackernoon.com/…
hackerrdave

Risposte:


118

È "module"una proprietà npm ufficiale o è una convenzione di qualche tipo?

È una proposta , ma probabilmente sarà supportata a causa dell'uso de facto.

C'è documentazione per questo da qualche parte?

C'è, infatti, e può essere trovato proprio qui e successivamente rimosso qui .

Per cosa è?

Interoperabilità del modulo ES6 in Node. Ulteriori discussioni possono essere trovate qui e qui . Ed ecco un post sul blog di Rich Harris che ne parla di più.


1
WebPack ha documentazione su questo da qualche parte o solo Rollup?
tech4him

1
Sembra che l'abbiano aggiunto qui: webpack.js.org/guides/author-libraries/#final-steps
tech4him

43

Viene utilizzato dagli strumenti bundler per il rilevamento ESM (ECMAScript Module). La documentazione di Rollup lo dice abbastanza bene:

Se il package.jsonfile ha anche un modulecampo, strumenti ES6-aware come cumulativo e webpack 2 potranno importare la versione del modulo ES6 direttamente.

Questo articolo su Rollup 1.0 lo dice in un altro modo:

Il maincampo assicura che agli utenti del nodo che utilizzano requireverrà servita la versione UMD. Il modulecampo non è una funzione npm ufficiale, ma una convenzione comune tra i bundler per designare come importare una versione ESM della nostra libreria.

Ulteriori discussioni pkg.modulesono sul Wiki di Rollup Github e sul webpack Docs .


1
Dovrebbe mainessere una versione minimizzata della versione UMD della libreria? O dovrebbe essere non minimizzato? Di cosa module? Immagino che il modulo non debba essere minimizzato perché l'utente utilizzerà il suo bundler (Webpack, Parcel, ecc ...) e utilizzando il file sorgente con il modulo ES6 esporta il bundler può laverage tree-shaking, giusto?
tonix
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.