Bower_components dovrebbe essere gitignored?


157

Sarebbe buona pratica conservare solo il bower.jsonfile e gitignore l'intera bower_componentsdirectory?


Ho appena notato un ricettario ufficiale di Symfony che in realtà risponde a questa esatta domanda, citando "Attualmente, dovresti probabilmente impegnare le risorse scaricate da Bower invece di aggiungere la directory al tuo .gitignorefile"
Pierre de LESPINAY,

Risposte:


149

La pagina ufficiale di Bower affermava:

NB Se non stai creando un pacchetto destinato ad essere utilizzato da altri (ad esempio, stai creando un'app Web), dovresti sempre controllare i pacchetti installati nel controllo del codice sorgente .

Assicurati di controllare il link nella citazione, discute alcuni pro e contro. Il vantaggio principale è che il check-in garantisce che le dipendenze siano sempre disponibili, purché il repository sia disponibile. Qualunque cosa accada a Bower, GitHub o qualsiasi altra cosa sarebbe necessaria altrimenti.


1
Grazie per questo interessante articolo. Quindi per ora non abbiamo ancora un "file di blocco" equivalente a congelare le versioni.
Pierre de LESPINAY,

1
@PierredeLESPINAY Solo per il livello superiore. Ciò che manca è un equivalente della funzione di restringimento npm.
passy

3
Lo dicono anche nel loro post sul blog "In definitiva, la scelta di fare il check-in in tutta la tua directory / bower_components dipende da te ...".
Krishnaraj

3
Il ragionamento alla base del loro check-in è che un giorno la biblioteca potrebbe scomparire da Internet o che potrebbero essere dei tempi di inattività che a loro volta potrebbero causare errori di costruzione. Come utente Maven / Gradle non penso mai al check-in delle dipendenze.
Krishnaraj

7
I consigli sulla pagina ufficiale di Bower per controllare i pacchetti installati nel controllo del codice sorgente sono stati rimossi nel 2014: github.com/bower/bower.github.io/commit/…
utente

52

Il file .gitignore in un progetto Yeoman AngularJS appena generato ha componenti bower_components (e node_modules) elencati per essere ignorati (se non conosci Yeoman è uno strumento di impalcatura web molto affidabile per le webapp moderne, quindi è abbastanza buono per me!):

.gitignore

node_modules
dist
.tmp
.sass-cache
bower_components

9

C'è un tempo e un posto per entrambi gli approcci. Per Yeoman è opportuno affidarsi a bower.json perché è uno strumento in una catena di strumenti e deve rimanere vivo e respirare con l'ecosistema di Bower. Per un'app Web distribuibile, è generalmente buona norma impegnare dipendenze e mantenere un maggiore controllo.

Ecco un buon articolo che mi piace che ne discute.


6

Se stai usando Grunt and Node con Bower ha senso inserire bower_components nel tuo .gitignore perché quando esegui grunt serve o grunt build si prende cura delle dipendenze per te, sono sicuro che è per questo che in Yeoman lo aggiungono a il .gitignore


5

Il Yeoman generatore preriempita Le .gitignore file con bower_components, ma anche pre-riempita con altre directory penserei sarebbero necessari per un'applicazione finale (come www) così ho fatto qualche ricerca.

Ho scoperto che www / index.html è una versione ridotta dell'app / index.html. La directory dell'app e i suoi contenuti (compresi bower_components) contengono i file di origine necessari per la directory di output (www). Impegni le directory dei sorgenti nel controllo del codice sorgente (es. Git) ma non nei file generati (es. Www). I gestori di pacchetti come bower e npm sono pensati per essere utilizzati durante la fase di generazione / generazione e i loro artefatti non devono essere controllati nel controllo del codice sorgente.

In definitiva, la fonte che si controlla in git è la configurazione minima necessaria per costruire il resto del progetto per scopi di sviluppo o distribuzione.


0

È bene ignorare /bower_componentsdir e solo il check-in bower.jsone il bower-locker.bower.jsonfile se si crea il file di blocco utilizzando il blocco del bower scritto da Shawn Lonas .

Prima della creazione di bower-locker, c'era uno svantaggio causato da un problema di bower che non aveva la capacità di restringimento ma che può essere mitigato dalla libreria sopra.

Esegui i seguenti comandi per ottenerlo:

npm install bower-locker -g

o

yarn global add bower-locker

quindi generare il file di blocco basato sul bower.jsonfile esistente eseguendo:

bower-locker lock

Il bower.jsonfile originale verrà rinominatobower-locker.bower.json

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.