Bower (Software)

Paketverwaltungstool für clientseitige Webentwicklung

Bower ist ein freier Paketmanager für clientseitige Webentwicklung. Es ermöglicht das einfache Installieren und Aktualisieren von Programmbibliotheken und Frameworks, mithilfe eines in Node.js geschriebenen Kommandozeilenwerkzeugs.

Bower
Basisdaten

Entwickler Twitter und Mitwirkende der GitHub-Community[1]
Erscheinungsjahr 2012
Aktuelle Version 1.8.12[2][3]
(19. Januar 2021)
Betriebssystem Plattformunabhängig
Programmier­sprache JavaScript (Node.js)
Kategorie Paketmanager
Lizenz MIT-Lizenz
deutschsprachig nein
bower.io

Funktionsweise und Konzepte

Bearbeiten

Bower wird über die Kommandozeile (Shell) gesteuert. Nachfolgend findet sich eine Auflistung der wichtigsten Befehle und Konzepte von Bower.

Installation

Bearbeiten

Bower ist ein Kommandozeilenprogramm und benötigt Node.js und wird daher mit Node Package Manager (npm) installiert, für die Installation unter unixoiden Systemen bzw. POSIX-Systemen führt man den Befehl npm install -g bower in der Shell aus um die Installation global auszuführen.[4]

Nach der Installation steht in der Kommandozeile nun der Befehl bower zur Verfügung.

Packages

Bearbeiten

Packages sind bei Bower einzelne Programme wie z. B. jQuery und Angular.js, also eigenständige Softwarepakete, Libraries und Frameworks.

Packages können einzeln über die Shell installiert werden, dazu navigiert man in der Shell auf den Ordner und führt bower install [package] aus, „package“ muss durch das entsprechende (zu installierende) Package ersetzt werden.

Dabei gibt es verschiedene Möglichkeiten das Package anzugeben. „Registrierte“ Packages, also durch einen eindeutigen Namen bei Bower identifiziert (dies sind meist größere/bekanntere Softwareprojekte), kann dieser Name allein angegeben werden und sieht bei jQuery z. B. so aus bower install jquery. Es kann auch ein GitHub-Kürzel in der Form Entwickler/Projekt angegeben werden und sieht für Angular.js wie folgt aus bower install angular/angular.js. Darüber hinaus kann auch eine eindeutige Adresse angegeben werden, entweder eine Gitadresse (bower install git://github.com/user/package.git) oder eine HTTP-URL (bower install http://example.com/script.js) angegeben werden.

Projektinitialisierung und bower.json

Bearbeiten

Ein Ordner kann mit dem Befehl bower init initialisiert werden, beim Ausführen dieses Befehls wird eine bower.json-Datei angelegt. Dies kann auch selbständig erstellt werden. Eine bower.json sieht wie folgt aus:[5]

{
  "name": "my-project",
  "version": "1.0.0",
  "main":  [
    "path/to/main.js",
    "path/to/main.css"
  ],
  "private": true,
  "keywords": [
    "MyKeyword",
    "OtherKeword"
  ],
  "ignore": [
    ".jshintrc",
    "**/*.txt"
  ],
  "dependencies": {
    "<name>": "<version>",
    "<name>": "<folder>",
    "<name>": "<package>"
  },
  "devDependencies": {
    "<test-framework-name>": "<version>"
  }
}

Dabei enthält "name" den Projektnamen als String. "version" erwartet einen String mit der aktuellen Version, üblicherweise im Format Major.Minor.Patch. "main" enthält optional den/die Pfad(e) maximal einer Datei je Typ (z. B. JavaScript, CSS,…) als String oder Array, welche als Einstiegspunkt zur Verwendung des Projektes angesehen werden kann. "private" ist ein Boolean, wenn auf true gesetzt gibt dies an, dass dieses Projekt nicht zur Veröffentlichung vorgesehen ist. "ignore" nimmt einen Stringarray mit den, für den Produktivgebrauch, zu ignorierenden Dateien als Wert an. "dependencies" sind die, als Hash anzugebenden Abhängigkeiten, die auf jeden Fall erfüllt werden müssen. "devDependencies" sind ebenfalls als Hash zu definierenden Abhängigkeiten, die jedoch nur für die weitergehende Entwicklung (Testing, Dokumentation etc.) benötigt werden.[5]

Die "dependencies" und die devDependencies können auch über die Shellbefehle bower install <package> --save, was das angegeben „package“ zu den „dependencies“ beziehungsweise bower install <package> --save-dev dies fügt das angegebene „package“ zu den „devDependencies“ in der bower.json hinzu.[5]

Führt man den Befehl bower install in einem Ordner aus, in dem eine (ausgefüllte) bower.json-Datei liegt, werden die „dependencies“ und „devDependencies“ gegebenenfalls heruntergeladen und werden standardmäßig im Ordner bower_components/ abgelegt. Das installieren der „devDependencies“ kann mit der Angabe bower install -p, wobei „p“ für „production“ steht verhindert werden.

Geschichte

Bearbeiten

Bower wurde von Twitter im Rahmen seiner Open-Source-Initiative im Jahr 2012 initiiert[1] und wird derzeit von einem Team aus 7 Hauptentwicklern (englisch core developer) und 121 Mitwirkenden der GitHub-Community entwickelt (Stand Ende November 2014).[6][7]

Mit der fortschreitenden Verbreitung des ECMAScript-6-Modulsystems[8] sind viele Projekte und Entwickler auf NPM in Kombination mit Bundler-Software wie Browserify bzw. Webpack umgestiegen. Das Projekt überlegte seit Juni 2016, sich selbst als deprecated zu bezeichnen.[9] Seit Mai 2017 wird auf der Projekt- und Webseite empfohlen, Yarn und Webpack als Ersatz zu verwenden.[10][11]

Bower wurde nach der englischen Bezeichnung der Vogelart der Laubenvögel (englisch Bowerbirds) benannt. Bei dieser Vogelart sammelt das Männchen verschiedene farbige Gegenstände, um seine Laube möglichst prächtig zu gestalten, da sich Weibchen mit dem Bauherren der prächtigsten Laube paaren. Bower macht eigenen Angaben zufolge genau das: es sammelt die Programme (Gegenstände) und stellt sie dem Entwickler zur Verfügung um seine Anwendung (Laube) zu entwickeln.[12]

Das Logo zeigt einen Goldlaubenvogel bei seinem Balztanz und wurde von Dave DeSandro und Isaac Durazo gestaltet.[13]

Die Logoentwicklung wurde auf GitHub Gist dokumentiert.[14]

Bearbeiten

Einzelnachweise

Bearbeiten
  1. a b About. In: bower.io. Abgerufen am 29. November 2014 (englisch).
  2. Release 1.8.12. 19. Januar 2021 (abgerufen am 8. Februar 2021).
  3. registry.npmjs.com. In: npmjs. (abgerufen am 1. März 2023).
  4. Install Bower. In: Bower. Abgerufen am 29. November 2014 (englisch).
  5. a b c Creating packages. In: Bower. Abgerufen am 30. November 2014 (englisch).
  6. Contributors. In: GitHub. Abgerufen am 29. November 2014 (englisch).
  7. Bower Repository on GitHub. In: GitHub. Abgerufen am 29. November 2014 (englisch).
  8. ECMAScript 6: New Features: Overview and Comparison. In: es6-features.org. Abgerufen am 29. Dezember 2016 (englisch, Modules: Value Export/Import. Support for exporting/importing values from/to modules without global namespace pollution.).
  9. Consider deprecating Bower. · Issue #2298 · bower/bower. In: GitHub. Abgerufen am 29. Dezember 2016 (englisch).
  10. Add yarn and webpack recommendation (#2458) · bower/bower@0bd318d. 19. Mai 2017, abgerufen am 17. März 2018 (englisch): „..psst! While Bower is maintained, we recommend yarn and webpack for new front-end projects!“
  11. How to migrate away from Bower? In: bower.io/blog. 2. Oktober 2017, abgerufen am 17. März 2018 (englisch).
  12. The Bowerbird. In: bower.io. Abgerufen am 29. November 2014 (englisch).
  13. Bower Logo. In: Bower. Abgerufen am 29. November 2014 (englisch).
  14. Dave DeSandro: Bower logo. In: gist.github.com. Abgerufen am 29. November 2014 (englisch).