Ausgangssituation:
Die Entwicklung von Software für das und mit dem openWIM-System findet auf einem Entwicklungs- und Test-Server statt. Dabei wird zunächst mit Quelldateien gearbeitet, die "unverdichtet" sind - also Kommentierungen sowie Leerzeilen zur besseren Übersicht enthalten und jeweils nur für einzelne Teilaufgaben vorgesehen sind. Die Entwicklungsarbeiten finden direkt auf Basis dieser Dateien statt. Dazu werden lokale (nichtöffentliche) Domains wie beispielsweise developer.wim-d.cs08 verwendet.
Die Entwicklungsarbeiten können verschiedene Bereiche umfassen:
Die Dateien für den generellen Server-Betrieb,
die jeweiligen projektspezifisch ergänzenden Dateien zum Server-System,
die grundlegenden Dateien für den Betrieb der openWIM Client-Software (im Browser) und
die jeweiligen projektspezifisch ergänzenden Dateien für die Client-Software im Browser.
In der Datenbank des Servers stehen die projektbezogenen Objektdaten für die Inhalte der Darstellungen der Internetpräsenz bzw. der "App". Dabei werden Objektdaten auch projektübergreifend genutzt.
Weiterhin werden ggf. noch Änderungen an Steuerungs-Dateien wie bower.json, manifest.json, wim-admin.json, etc. gemacht.
Aufgabenstellung:
Für die Nutzung (= Übertragung) im Internet müssen aus Gründen der Effizienz diverse Dateien noch "verdichtet" (minified) werden um die Menge der an die Browser zu übertragenden Daten möglichst gering zu halten. Dabei werden aus den Dateien möglichst alle Zeichen entfernt, die für die Funktion nicht benötigt werden. Auch werden lange Bezeichner möglichst durch kurze Bezeichner ersetzt.
Weiterhin werden einige Dateien zusammengefügt, damit sie nicht (aufwändig) alle einzeln übertragen werden müssen, sondern gebündelt auf eine einzelne Anforderung hin. Wenn HTTP/2 genutzt werden kann, ist ein solches vorab durchgeführtes "paketieren" nicht mehr nötig, da dieses aufwandsarm und situationsgerecht zur Laufzeit geschehen kann.
Die eben beschriebenen Aufgaben werden auf dem Entwicklungs- und Test-Server mit Unterstützung von Polymer-CLI durchgeführt. Die damit erstellten Dateien werden dann an die dafür vorgesehenen Plätze verschoben und können dann über eine Domain wie test.wim-d.cs08 getestet werden um nach erfolgreichem Test dann an die entsprechende Stelle auf den Server im Internet kopiert zu werden (nachdem dort ggf. der Zielbereich aufgeräumt wurde).
Ablauf der Erstellung einer neuen Client-Version:
In der Datei "polymer.json" muss eingetragen sein, welche Dateien für die Zusammenstellung der Client-Software genutzt werden sollen. Nachfolgend beschriebene Parameter haben dabei folgende Bedeutungen:
entrypoint:- Wird derzeit nicht wirklich genutzt, aber von Polymer CLI benötigt. Es wird daher auf die Datei "
murks.html" (ein HTML-Dokument ohne darzustellenden Inhalt) verwiesen. shell:- Die .html-Datei, die als "Wurzel"-Datei alle weiteren (projektunabhängigen) .html-Dateien benötigt und zu der im Falle der Erzeugung einer "bundeled"-Erzeugung alle anderen .html-Dateien hinzugefügt werden.
fragments:- Hier muss die Liste aller HTML-Dateien eingetragen sein, die jeweils für die einzelnen Projekte zum Client übertragen werden müssen. Die "simple"-Dateien zu den einzelnen Projekten gehören nicht dazu, denn diese werden nur auf dem Server benötigt. Diese Dateien werden nicht mit anderen zusammengefasst, sondern nur verdichtet.
sources:- [++tbd++] [Details hierzu sind der Polymer CLI Dokumentation zu entnehen]
extraDependencies:- [++tbd++] [Details hierzu sind der Polymer CLI Dokumentation zu entnehen]
builds:- Hier können alternative Parametereinstellungen angegeben werden, falls nicht eine der Standard-Builds erzeugt werden soll. [Details dazu sind der Polymer CLI Dokumentation zu entnehen]
Alternativ können auch Standard-Builds wie "es6-bundled" generiert werden wie beispielsweise:
polymer build --preset es6-bundled lint:- Hier werden Einstellungen für die formale Überprüfung der zu verwendenden Dateien eingetragen. [Details hierzu sind der Polymer CLI Dokumentation zu entnehen]
Normalerweise werden die Dateien für eine neue Client-Version per
polymer build --preset es6-bundled
generiert. Das Ergebnis hierzu wird im Verzeichnis build/es6-bundled abgelegt. Zuvor dort vorhandene Dateien werden gelöscht.
Diese Dateien müssen dann "manuell" in beispielsweise das Verzeichnis /clients/32.22.2 (für die Version 32.22.2) verschoben werden. Dabei ist anzumerken, dass die Dateien /src/wim-common.js und /src/wim-service.js sowohl in ihrer unverdichteten Originalfassung (vom Server) als auch in ihrer verdichteten Fassung des /clients/src Verzeichnis (vom Worker-Teil des Client) verwendet werden. Die Dateien /src/wim-worker.js und /src/pouchdb-*.js werden nur vom worker-Bereich des Clients verwendet. Vom Server (wim-server.js) wird je nach verwendeter Subdomain (test.xxx oder developer.xxx usw.) die verdichtete oder unverdichtete Version der Dateien zum Client gesendet.