2017-12-23 23 views
0

Ich habe ein paar Repos, die ich auf npm veröffentlichen möchte. Dies sind jedoch Browser-Repos, die ein Problem darstellen: Die main-Eigenschaft in package.json scheint für die Angabe eines Knotens (kein Browser) -Modul zu sein.npm main: index.js für Browser Repos

Von https://docs.npmjs.com/files/package.json#main

Haupt

Das Hauptfeld ist eine Modul-ID, die der primäre Einstiegspunkt zu Ihrem Programm. Das heißt, wenn Ihr Paket den Namen foo hat und ein Benutzer es installiert und dann ("foo") benötigt, wird das exports-Objekt Ihres Hauptmoduls zurückgegeben.

Dies sollte eine Modul-ID relativ zum Stammverzeichnis Ihres Paketordners sein.

Für die meisten Module ist es am sinnvollsten, ein Hauptscript zu haben und oft nicht viel mehr.

Also was soll ich für ein npm-Paket für Browser Repos verwenden? Einfach das Feld auslassen? Zeigen Sie auf das Repo-Bündel? Etwas anderes?

+0

Das Rollup Repo hat diese Diskussion: https://github.com/rollup/rollup/wiki/pkg.module. Grundsätzlich scheint "main" auf ein "Legacy" -Bündel zu verweisen, während "module" (oder "jsnext: main") auf ein modernes ES-Modul verweisen sollte (ich habe beide in meinem dist /). Ist das Standard? Es scheint für entweder Browser- oder Knotenmodule zu sein. – backspaces

Antwort

0

checkte ich mehrere Browser repos und es scheint, dass dies die aktuelle Konvention (Entnommen aus der Three.js & Rollup Github repos):

  • "main": "build/three.js" ,
  • "jsnext: main": "Code/three.module.js"
  • "Modul": "Code/three.module.js"

main Punkte zu dem <script> Code wh ile jsnext:main und module zeigen auf das es6-Modul.

Es gibt ein paar Namenskonventionen für das Modul Bundle:

  • foo.module.js
  • foo.es.js
  • foo.mjs

und so weiter.

https://github.com/rollup/rollup/wiki/pkg.module, siehe oben, scheint eine sinnvolle Referenz zu sein. this Google für mehr:

Haupt jsnext: Hauptmoduleigenschaften package.json

Fazit: Es gibt Konventionen aber keine Standards.

Verwandte Themen