2017-05-04 5 views
0

npm init erzeugt eine Datei mit dem Namen package.json. Hier ist der Inhalt:npm: Bedeutung des Hauptattributs

{ 
    "name": "webpack-tut", 
    "version": "1.0.0", 
    "description": "", 
    "main": "index.js", 
    .... 
} 

Ich las auf diesen package.json doc

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

Dies sollte eine Modul-ID relativ zum Stammverzeichnis des Pakets Ordner sein.

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

Ich verstehe das nicht wirklich. Weil es in meinem Projekt und in einigen Projekten, die ich heruntergeladen habe, aussieht, dass dieses Feld keinen Effekt hat. Ich ändere den Dateinamen, Beispiel: "main": "temp.js" und App läuft noch normal.

+0

Es hängt von jedem einzelnen Modul ab. Sie können alle zur Verfügung stellen, schauen und herausfinden. Es hängt auch davon ab, wie Sie das Modul importieren. –

+0

Verwenden Sie 'require (" ./ my-webpack-tut "), um Ihre App zu starten? Oder läufst du es anders? –

Antwort

0

Knotenalgorithmus Pseudocode zum Auflösen eines Moduls gefunden werden here.

package.json :: main - ist nützlich, wenn Sie ein Modul erstellen möchten, das durch seine folder aufgelöst werden kann. Dies ist eine Datei, die auf die gesamte vom Modul bereitgestellte Bibliothek verweist.

In Ihrem Fall wird dies verwendet, wenn andere Module Ihr Modul benötigen, das Sie gerade bauen.

Zum Beispiel kann der bekannte lodash einen Build haben, der die gesamte Bibliothek enthält, die wie require('lodash') referenziert werden kann. Dies funktioniert, weil die Datei package.json"main: "lodash.js" hat. In vielen Fällen ist dies möglicherweise keine gute Idee, da Sie möglicherweise nur einen Teil dieser Bibliothek benötigen. Stattdessen kann man den Core-Build verwenden und auf andere Dateien oder Builds verweisen, wenn dies für notwendig erachtet wird.

Als weiteres Beispiel, wenn Sie Modul libraryA in einem Ordner mit dem Namen ./libraryA mit package.json:

{ 
    "name": "libraryA", 
    "version": "1.0.0", 
    "description": "", 
    "main": "./lib/entireMegaHugeLibraryA.js", 
    .... 
} 

und einem Modul libraryB in einem Ordner mit dem Namen ./libraryB. Dann können Sie libraryA anfordern, indem Sie require('../libraryA') tun. Dies wird auf ../libraryA/lib/entireMegaHugeLibraryA.js aufgelöst.

Wenn Sie nun die algorithm pseudocode analysieren, befinden Sie sich in der Zeile a. Parse X/package.json, and look for "main" field..