Bower, balíčkovací systém pro NodeJS

Bower je přesně ten nástroj, který jako vývojář v NodeJS potřebujete, abyste své webové aplikaci vdechnuli život v internetovém prohlížeči na straně návštěvníka. Jde o utilitu, která pracuje nad centrálním repozitářem knihoven a jednoduchým způsobem vám dovoluje stahovat, updatovat javascriptové knihovny, které chcete vkládat do své www aplikace a následně je spouštět coby frontend v prohlížeči návštěvníka.

bower
Jedná se o takovou obdobu npm pro frontend. Jeho autorem je, stejně jako u Bootstrapu, Twitter a vznikl v už roce 2012, takže žádná horká novinka, ale stabilní, otestovaný nástroj.

Jak funguje Bower

Po nainstalování na vaše pc máte k dispozici příkaz bower, který provádí všechny požadované akce. Jeho podobnost s npm je mimořádná. Má svůj bower.json konfigurační soubor, který popisuje váš projekt s pohledu frontendových knihoven.
Založit bower.json můžete příkazem

bower init

Budete vyzváni k zadání pár odpovědí, které povedou k založení konfiguráku:

{
  "name": "ap",
  "authors": [
    "Josef Podany "
  ],
  "description": "Pokusna aplikace",
  "main": "app.js",
  "moduleType": [
    "node"
  ],
  "keywords": [
    "pokus"
  ],
  "license": "MIT",
  "homepage": "http://pepa.holla.cz",
  "ignore": [
    "**/.*",
    "node_modules",
    "bower_components",
    "public/components",
    "test",
    "tests"
  ]
}

Důležitá poznámka
V adresáři vašeho projektu byste si měli vytvořit soubor .bowerrc, kde budete specifikovat minimálně adresář do kterého se budou stahovat, instalovat, vámi požadované knihovny:

{
    "directory": "public/components"
}

Když takto nenaspecifikujete kam se mají knihovny stahovat, budou defaultně stahovaný do bower_components.
Detailní specifikaci .bowerrc souboru najdete zde.

Vložení Angularu do projektu

No a pak už jen stačí zadat příkaz

bower install --save angular

Do adresáře public/components se stáhne Angular, která pak můžete jednoduše použít v HTML souborech vaší aplikace:


–save se postará o modifikaci vašeho bower.json konfiguračního souboru:

"dependencies": {
    "jquery": "~2.1.4",
    "angular": "~1.4.7",
    "bootstrap": "~3.3.5"
}

Já jsem cvičně doinstaloval i knihovny pro JQuety a Bootsrap.
Můžete pak kdykoliv smazat public/components a následně pak jednoduše nainstalovat vše znovu:

# instalace knihoven
bower install
# nebo jen aktualizace knihoven
bower update

Rozdíl mezi npm a Bower

Bower na rozdíl od npm neřeší závislosti. Pokud v NodeJS potřebujete balíček mongodb a ten sám je závislý na nějakém jiném, dalším, balíčku, pak při instalaci balíčku mongodb se do adresáře s knihovnou mongodb stáhnou všechny požadované závislosti. A tohle funguje rekurzivně. To znamená, že pokud by knihovna mongodb byla závislá na knihovně super-file a ta závislá na knihovně fileio, nainstalují se do projektu všechny tyto knihovny a to včetně požadovaných verzí (závislost lze specifikovat i na požadovanou verzi knihovny).

A tohle v pojetí knihoven v Boweru nefunguje. Bower neřeší žádné závislosti. To znamené, že pokud chcete používat Bootstrap, který je závislý na JQuery, musíte specifikovat a nainstalovat oba zvlášť.

bower install --save bootstrap
bower install --save query