Qual è la proprietà "file principale" quando si esegue bower init?


106

Qual è l'uso del file principale della proprietà quando esegui bower init? Ho cercato e molte persone dicono che attualmente non ha scopo.

È vero? La documentazione di Bower non lo spiega neanche.


3
Sembra che ci siano anche altri confusi da questo. Ad esempio, l'autore di questo tutorial di pergamena
Simon Bengtsson

Sembra che la definizione della mainproprietà sia attualmente in discussione e in discussione in una questione aperta sul repo github pergola. Cerca qui le attuali definizioni proposte e la discussione: github.com/bower/bower/issues/935
BenjaminGolder

Risposte:


60

Secondo la documentazione di Bower.io

principale

Tipo consigliato: stringa o array di stringhe

I file principali necessari per utilizzare il pacchetto. Sebbene Bower non utilizzi direttamente questi file, sono elencati con i comandi bower list --json ebower list --paths, quindi possono essere usati dagli strumenti di compilazione.

I file del preprocessore come CoffeeScript dovrebbero essere compilati. Non includere file minimizzati. I nomi dei file non dovrebbero essere dotati di versione (Cattivo: pacchetto.1.1.0.js; Buono: pacchetto.js).

Penso che sia più per la gestione dei pacchetti e per creare strumenti come Grunt e Brunch. Ad esempio, Bootstrap ha questo bower.jsonaspetto:

{
  "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"
  }
}

Quando compilo in Brunch, estrae questi file dalla mia bower_componentscartella nella mia publiccartella.


Quale "documentazione"?
0xcaff

5
Questo non risponde davvero alla domanda. La documentazione non chiarisce il ruolo degli "endpoint primari del pacchetto". Hai affermato l'importanza di main per il brunch, ma non come si relaziona a Bower.
BenjaminGolder

Penso che il punto che stavo cercando di sottolineare è che i file principali sono utilizzati in diversi strumenti di compilazione per quanto riguarda "questi sono i file che il mio pacchetto bower intende distribuire". È ancora un po 'ambiguo per il suo vero intento.
Kelly J Andrews

L'ancora del collegamento alla documentazione è morta. Vedi la risposta di @Vivian Spencer per un aggiornamento.
Timothy Gu

9

Secondo la specifica JSON di Bower ( https://github.com/bower/spec/blob/master/json.md#main ), la proprietà "main" viene utilizzata per elencare i file utilizzati principalmente nel progetto. I file elencati non sono effettivamente utilizzati da Bower in alcun modo, apparentemente sono lì allo scopo di essere utilizzati da altri strumenti di compilazione.

Ecco le specifiche ufficiali:

principale


Tipo consigliato : Stringo ArraydiString

I file principali necessari per utilizzare il pacchetto. Sebbene Bower non utilizzi direttamente questi file, sono elencati con i comandi bower list --jsone bower list --paths, quindi possono essere utilizzati dagli strumenti di compilazione.

  • I file del preprocessore come CoffeeScript dovrebbero essere compilati.
  • Non includere file minimizzati.
  • I nomi dei file non dovrebbero essere dotati di versione (Cattivo: package.1.1.0.js; Buono: package.js).

1
Alcune librerie semplicemente non funzioneranno senza i file principali elencati, cablata per essere l'esempio perfetto.
kboom

@kboom potrei avere il problema connesso a quello che stai dicendo: ad esempio il file css di pdf.js-viewer non verrà copiato usando main-bower-files, dovrei metterlo in main all'interno di bower.json? Se sì, devo effettivamente fornire l'intero percorso per ogni file? Grazie!
trainoasis
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.