Was ist die Eigenschaft "Hauptdatei", wenn Sie Bower Init ausführen?


106

Was ist die Verwendung der Eigenschaftshauptdatei , wenn Sie bower init ausführen? Ich habe gesucht und viele Leute sagen, dass es derzeit keinen Zweck hat.

Ist das wahr? Bowers Dokumentation erklärt es auch nicht.


3
Es scheint auch andere zu geben, die davon verwirrt sind. Zum Beispiel der Autor dieses Bower-
Simon Bengtsson

Es scheint, dass die Definition der mainImmobilie derzeit in Frage steht und in einer offenen Ausgabe des Bower Github Repo diskutiert wird. Suchen Sie hier nach den aktuell vorgeschlagenen Definitionen und der Diskussion: github.com/bower/bower/issues/935
BenjaminGolder

Antworten:


60

Laut der Bower.io-Dokumentation

Main

Empfohlener Typ: String oder Array of String

Die primären aktiven Dateien, die zur Verwendung Ihres Pakets erforderlich sind. Bower verwendet diese Dateien zwar nicht direkt, sie werden jedoch mit den Befehlen bower list --json und bower list --paths aufgelistet, sodass sie von Build-Tools verwendet werden können.

Präprozessor-Dateien wie CoffeeScript sollten kompiliert werden. Minimierte Dateien sollten nicht enthalten sein. Dateinamen sollten nicht versioniert werden (Bad: package.1.1.0.js; Good: package.js).

Ich denke, es ist mehr für die Paketverwaltung und Build-Tools wie Grunt und Brunch. Zum Beispiel bower.jsonsieht Bootstrap wie folgt aus:

{
  "name": "bootstrap",
  "version": "3.0.3",
  "main": [
    "./dist/css/bootstrap.css",
    "./dist/js/bootstrap.js",
    "./dist/fonts/glyphicons-halflings-regular.eot",
    "./dist/fonts/glyphicons-halflings-regular.svg",
    "./dist/fonts/glyphicons-halflings-regular.ttf",
    "./dist/fonts/glyphicons-halflings-regular.woff"
  ],
  "ignore": [
    "**/.*",
    "_config.yml",
    "CNAME",
    "composer.json",
    "CONTRIBUTING.md",
    "docs",
    "js/tests"
  ],
  "dependencies": {
    "jquery": ">= 1.9.0"
  }
}

Wenn ich Brunch einbaue, werden diese Dateien aus meinem bower_componentsOrdner in meinem publicOrdner abgerufen.


Welche "Dokumentation"?
0xcaff

5
Dies beantwortet die Frage nicht wirklich. In der Dokumentation wird die Rolle von "Die primären Endpunkte Ihres Pakets" nicht klargestellt. Sie haben die Relevanz von main für Brunch angegeben, aber nicht, wie es sich auf Bower bezieht.
BenjaminGolder

Ich denke, der Punkt, den ich anstrebte, ist, dass die Hauptdateien in mehreren Build-Tools verwendet werden, um "dies sind die Dateien, die mein Bower-Paket verteilen möchte". Es ist immer noch ein bisschen zweideutig zu seiner wahren Absicht.
Kelly J Andrews

Der Anker des Dokumentationslinks ist tot. Ein Update finden Sie in der Antwort von @Vivian Spencer.
Timothy Gu

9

Gemäß der JSON-Spezifikation von Bower ( https://github.com/bower/spec/blob/master/json.md#main ) wird die Eigenschaft "main" verwendet, um die hauptsächlich im Projekt verwendeten Dateien aufzulisten. Die aufgelisteten Dateien werden von Bower in keiner Weise verwendet, sie sind anscheinend dazu da, von anderen Build-Tools verwendet zu werden.

Hier ist die offizielle Spezifikation:

Main

Empfohlener
Typ: StringoderArray vonString

Die primären aktiven Dateien, die zur Verwendung Ihres Pakets erforderlich sind. Bower verwendet diese Dateien zwar nicht direkt, sie werden jedoch mit den Befehlen bower list --jsonund aufgelistet bower list --paths, sodass sie von Build-Tools verwendet werden können.

  • Präprozessor-Dateien wie CoffeeScript sollten kompiliert werden.
  • Fügen Sie keine minimierten Dateien hinzu.
  • Dateinamen sollten nicht versioniert werden (Bad: package.1.1.0.js; Good: package.js).

1
Einige Bibliotheken funktionieren einfach nicht ohne die aufgelisteten Hauptdateien. Wiredep ist das perfekte Beispiel.
Kboom

@kboom Ich habe möglicherweise das Problem im Zusammenhang mit dem, was Sie sagen: Zum Beispiel wird die CSS-Datei von pdf.js-viewer nicht mit main-bower-Dateien kopiert. Sollte ich sie in main in bower.json einfügen? Wenn ja, muss ich tatsächlich den gesamten Pfad für jede Datei angeben? Vielen Dank!
Trainoasis
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.