web-dev-qa-db-fra.com

A quoi sert le champ package.json "module"?

J'ai vu des paquets npm ( voir par exemple ) avoir un champ pkg.module dans leur package.json. "module" est-il une propriété officielle de npm ou s'agit-il d'une convention quelconque? Existe-t-il une documentation pour cela quelque part? C'est pour quoi? esnext path? Chemin de module dégroupé?

81
ryanve

"module" est-il une propriété officielle de npm ou s'agit-il d'une convention quelconque?

C'est une proposition , mais susceptible d'être prise en charge en raison d'une utilisation de facto.

Existe-t-il une documentation pour cela quelque part?

Il existe, en fait, et on peut le trouver ici et plus tard supprimé ici .

C'est pour quoi?

Interopérabilité du module ES6 dans le nœud. Une discussion supplémentaire peut être trouvée ici et ici . Et voici n article de blog de Rich Harris en parle plus à ce sujet.

93
Josh Habdas

Ceci est utilisé par les outils de regroupement pour la détection ESM (ECMAScript Module). Le documentation cumulative le dit plutôt bien:

Si votre fichier package.json contient également un champ module, des outils compatibles avec ES6 tels que Rollup et webpack 2 vont importer le module ES6 version directement.

Cet article sur Rollup 1. le dit autrement:

Le champ main permet de s'assurer que Node utilisateurs utilisant require recevront la version UMD. Le champ module n’est pas une fonctionnalité officielle de npm, mais une convention commune aux entreprises de groupement pour indiquer comment importer une version ESM de notre bibliothèque.

Une discussion plus approfondie de pkg.module se trouve sur le Rollith Github Wiki et le webpack Docs .

28
Jack Steam