Einseitige Javascript-Anwendung
Ich habe eine anspruchsvolle Ajax-gesteuerte Single Page Webapp gebaut, die einen RESTful Backend Web Service verwendet, der JSON serviert. Das Javascript ist in viele verschiedene Dateien aufgeteilt, wobei jede Datei eine Art von Funktion oder Komponente darstellt.
Während der Dienst in der Vergangenheit alpha Beim Testen habe ich all diese Dateien ohne Minification separat bereitgestellt. Aber jetzt möchte ich eine beta Version muss ich wirklich Dateien kombinieren, minifizieren und versionieren. Ich möchte dies zu meinem Build-Prozess hinzufügen, mit Maven.
Javascript Dateitypen
Ich verwende die folgenden "Typen" von Javascript-Dateien, von denen #3 und #4 meine Bedenken sind:
- Externe Dateien, wie jquery und jquery-ui, die vom Google CDN bereitgestellt werden. Selten ändern diese Versionen, können manuell behandelt werden.
- Jquery-Plugins, die ich selbst hoste, wie z.B. fullcalendar oder ui-layout. Auch diese aktualisiere ich nur selten auf neue Versionen und kann es manuell erledigen.
- Anwendungsweiter Javascript-Code. Benutzerdefiniertes Javascript, das über viele Dateien verteilt ist und sich gelegentlich ändern kann. Alle diese Dateien müssen geladen werden, damit die Anwendung funktioniert.
- Funktionsspezifischer Javascript-Code. Benutzerdefiniertes Javascript, das bei Bedarf geladen wird, wenn eine bestimmte Funktion angefordert wird. Dieser Code kann sich recht häufig ändern und wird nicht beim Start geladen.
Zielsetzungen erstellen
Ich möchte während meines Bauprozesses Folgendes tun:
- Verketten Sie alle Typ-3-Javascriptdateien, verkleinern Sie sie, und speichern Sie sie als eine einzige Datei mit einer Versionsnummer. Zum Beispiel:
app-2.0.6.min.js
wobei 2.0.6 die Version des Maven-Projekts ist. - Alle Dateien des Typs 4 sollten einzeln verkleinert und als separate Dateien mit Versionsnummern im Namen gespeichert werden. Zum Beispiel:
feature-abc-56ab32de29.min.js
wobei 56ab32de29 die Versionsnummer dieser speziellen Datei ist. - Aktualisieren Sie HTML-Dateien mit
<script>
Tags, um auf Javascript-Dateien mit den richtigen Versionsnummern zu verweisen. - Aktualisieren Sie Javscript-Dateien, die Typ-4-Feature-Javascript-Dateien laden, um auf die richtigen Versionen zu verweisen.
Fragen
-
Gibt es ein Maven-Plugin, das bei der Verkettung helfen wird?
-
Gibt es ein Maven-Plugin, das bei der Minifizierung hilft? Idealerweise würde ich gerne Google Closure Compiler verwenden, würde aber auch mit anderen arbeiten, wenn es einfacher ist.
-
Gibt es ein Maven-Plugin, das bei der Versionierung hilft?
-
Gibt es eine Möglichkeit, die Typ-4-Javascriptdateien mit unabhängigen Versionsnummern zu versehen? Im Idealfall, wenn eine Datei nicht zwischen Version 2.0.5 und 2.0.6 ändern, gibt es keine Notwendigkeit für die Benutzer, eine neue Version herunterladen und ihre Cache-Version würde gut funktionieren. Ich verwende GIT für die Versionskontrolle, gäbe es also eine Möglichkeit, den GIT-Hashcode einer Datei für die Versionierung zu verwenden?
-
Gibt es eine Lösung, die das Javascript komprimiert, das in normalen HTML-Dateien inline ist, ohne den HTML-Code zu zerstören?
-
Gibt es eine Lösung, mit der ich meine CSS-Dateien auch komprimieren und versionieren kann?