2013-06-19 13 views
27

Doc Bower dicePerché controllare i componenti del bower?

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

Qualcuno ha una buona risposta al perché?

Se io sto facendo una web app non voglio che il mio repo ingombra con gli aggiornamenti in versione della libreria X.

Voglio solo di aggiornare le dipendenze bower.json. Penserei che la maggior parte dei progetti avrà una fase di costruzione o simili, ad esempio con grugniti. La fase di compilazione assicurerebbe di chiamare bower install/update prima della creazione, in modo che quei file siano presenti per concat/minification ecc. O anche una semplice copia in una cartella dist.

Mi manca qualcosa?

risposta

28

È per bloccare le dipendenze in modo da evitare che una cattiva dipendenza da rompere la tua app o il remoto essere giù impedendo la distribuzione. Questo potrebbe accadere anche se hai una fase di costruzione, dal momento che probabilmente non esegui test approfonditi su ogni build, e i test automatici non catturano tutto, specialmente le regressioni visive. Inoltre, più sviluppatori potrebbero avere versioni diverse di una dipendenza. Affidandoti alle dipendenze, assicurati che tutti rimangano nella stessa versione. Trovo inoltre che la visualizzazione del diff sia un buon modo per garantire che non sia stato introdotto alcun elemento dannoso nell'albero delle dipendenze.

Nel mondo Node npm shrinkwrap parzialmente risolve questo problema, ma non esegue ancora la corrispondenza del checksum. Bower ha attualmente un ticket aperto per implementare lo stesso.

Potete leggere di più su di esso in questo post del blog: Checking in front-end dependencies

+0

Sì, credo di aver pensato di poter usare 1.2.3 invece di ~ 1.2.3 o simile. (O anche questo è ok se ho fiducia che la libreria usi il semere) Ma suppongo che se la libreria X abbia nel bower.json una depedency alla libreria Y e usi> = 2.3.4 o simili allora sono nei guai. Non vedrà l'ora di una funzionalità shrinkwrap. –

+3

Sì, e il blocco delle versioni, anche profonde, non è sufficiente poiché tag e versioni possono essere sostituiti. Ecco perché 'npm shrinkwrap' ha bisogno della corrispondenza del checksum di deps e questo è quello che vogliamo in Bower shrinkwrap dall'inizio. –

+0

Questo è lo stesso ragionamento dello sviluppo del gioco. Non si aggiornano i pacchetti tutto il tempo quindi è opportuno bloccarli o "comprimerli" in una versione specifica per evitare ritardi nella distribuzione o nelle build. –

0

Questa risposta non è tecnica, ma una ragione pratica si dimenticano di controllare nei componenti Bower.

Preferisco raccomandare che i pacchetti di bower siano bloccati in bower.json piuttosto che controllare questi pacchetti. Perché fidati di me, non puoi avere migliaia di file da scaricare e decomprimere in un computer. I computer con prestazioni lente hanno un problema con percorsi di file molto grandi e profondi. E in questo mondo di internet, credo che sia sempre facile scaricare i pacchetti piuttosto che portarli in giro.

È solo una questione di preferenza. Tutto deriva dall'esperienza. Ho controllato un progetto con componenti bower su Github ed è peggio durante il caricamento e il download. L'ho fatto attraverso un Mac relativamente nuovo.

Problemi correlati