Bower és un sistema de gestió de paquets (package management system) per a programació de la banda de client (client-side programming) en pàgines web (World Wide Web). Depèn de Node.js i npm i treballat amb repositoris git com per exemple GitHub.
Les pàgines web es creen utilitzant multitud de components com frameworks, libraries, assets, utilities i/o rainbows. Bower és una eina pensada per facilitar la gestió de totes aquestes eines.
Bower facilita la instal·lació de paquets i manté un control d'aquests fitxers en un fitxer de manifest en format JSON (bower.json).
Bower està optimitzat per al front-end, utilitza un flat dependency tree requerint només una versió de cada paquet reduint la càrrega de la pàgina al mínim
La forma més senzilla és utilitzar npm:
$ sudo npm install -g bower
Amb l'opció -g la instal·lació és global i per tant en molts sistemes cal ser superusuari ja que instal·larà per defecte bower a:
/usr/local/bin/bower -> /usr/local/lib/node_modules/bower/bin/bowerbower
Cal tenir el PATH configurat per utilitzar /usr/local/bin/. Comprovreu amb:
$ echo $PATH
Sinó és així podeu configurar ~/.bashrc i afegir a la última línia:
export PATH=${PATH}:/usr/local/bin/
Exemple: Instal·lació de jquery:
$ bower install jquery bower jquery#* not-cached git://github.com/jquery/jquery.git#* bower jquery#* resolve git://github.com/jquery/jquery.git#* bower jquery#* download https://github.com/jquery/jquery/archive/2.1.3.tar.gz bower jquery#* extract archive.tar.gz bower jquery#* resolved git://github.com/jquery/jquery.git#2.1.3 bower jquery#~2.1.3 install jquery#2.1.3 jquery#2.1.3 bower_components/jquery
Per defecte el que s'instal·la amb Bower s'instal·la a bower_components:
$ ls -l bower_components/ total 4 drwxrwxr-x 4 sergi sergi 4096 mar 11 12:46 jquery
Al fitxer de manifest (bower.json) del paquet instal·lat:
$ cat bower_components/jquery/bower.json { "name": "jquery", "version": "2.1.3", "main": "dist/jquery.js", "license": "MIT", "ignore": [ "**/.*", "build", "speed", "test", "*.md", "AUTHORS.txt", "Gruntfile.js", "package.json" ], "devDependencies": { "sizzle": "2.1.1-jquery.2.1.2", "requirejs": "2.1.10", "qunit": "1.14.0", "sinon": "1.8.1" }, "keywords": [ "jquery", "javascript", "library" ] }
Podeu veure informació sobre el paquet instal·lat.
El paquet que acabem d'instal·lar és el que s'anomena un paquet registrat, és a dir que està al repositori de bower que podeu consultar a:
http://bower.io/search/
Recursos:
Fitxer principal de configuració té un format molt similar a composer.json:
Bàsicament amb Laravel ens interessarà canviar el lloc per defecte on Bower instal·la les dependències o components bower, en compte de:
./bower_components
o voldrem guardar a.
./vendor/bower_components
Això es pot fer canviant la configuració per defecte de Bower només per a la carpeta a la que estem (és a dir només per al nostre projecte Laravel) creant un fitxer anomenat .bowerrc
$ cat .bowerrc { "directory" : "vendor/bower_components" }
I segurament també posar un Script Hook per a Gulp
$ cat .bowerrc { "directory" : "vendor/bower_components", "scripts": { "post-install" : gulp publish } }