51 votes

Plug-in Maven pour le contrôle de version et la réduction de javascript

Single Page Application Javascript

J'ai construit un système sophistiqué de ajax-driven single page application web qui utilise un séjour backend web service servant JSON. Le javascript est divisé en de nombreux types de fichiers, chaque fichier représentant une sorte de fonctionnalité ou d'un composant.

Bien que le service ait été en alpha test, je viens d'être au service de l'ensemble de ces fichiers séparément, sans minification. Mais maintenant que je voudrais lancer une bêta version, j'ai vraiment besoin de combiner des fichiers, rapetisser, et la version. Je veux ajouter à mon processus de création, à l'aide de Maven.

Javascript Types De Fichiers

Je suis à l'aide de la suite de "types" de fichiers javascript, dont #3 et #4 sont mes préoccupations:

  1. Des fichiers externes, tels jquery et jquery-ui servi de Google CDN. Rarement modifier ces versions, peuvent être traitées manuellement.
  2. Les plugins Jquery que j'anime moi-même, comme fullcalendar ou de l'interface utilisateur-mise en page. Encore une fois, j'ai rarement mise à jour de ces nouvelles versions et peut gérer manuellement.
  3. L'ensemble de l'Application du code javascript. Javascript personnalisé qui est répartie dans de nombreux fichiers et peuvent changer de temps en temps. Tous ces fichiers doivent être chargés pour que l'application fonctionne.
  4. Caractéristique spécifique de code javascript. Javascript personnalisé qui est chargé à la demande lors d'une fonctionnalité spécifique est demandée. Ce code peut changer assez souvent et n'est pas chargé au démarrage.

Construire Des Objectifs

J'aimerais faire ce qui suit lors de mon processus de création:

  • Concaténer tous type 3 fichiers javascript ensemble, rapetisser, et l'enregistrer comme un fichier unique avec un numéro de version. Par exemple: app-2.0.6.min.js, où 2.0.6 est le projet maven version.
  • Tous type 4 fichiers doivent être individuellement minifiés et enregistrés en tant que fichiers distincts avec des numéros de version dans le nom. Par exemple: feature-abc-56ab32de29.min.js, où 56ab32de29 est le numéro de version de ce fichier spécifique.
  • Mise à jour des fichiers HTML avec en <script> balises à pointer vers les fichiers javascript avec les numéros de version correct.
  • Mise à jour des fichiers Javascript que le type de charge 4 fonction javascript fichiers point à le droit à des versions.

Questions

  • Est-il un plugin maven pour vous aider avec la concaténation?

  • Est-il un plugin maven pour vous aider avec la minification? Idéalement, je voudrais utiliser Google Closure compiler, mais serait de travailler avec d'autres personnes si simple.

  • Est-il un plugin maven pour vous aider avec le contrôle de version?

  • Est-il possible d'avoir le type 4 fichiers javascript sont indépendantes de numéros de version? Idéalement, si un fichier ne change pas entre la version 2.0.5 et 2.0.6, il n'est pas nécessaire pour les utilisateurs de télécharger une nouvelle version et leur version en cache marcherait bien. J'utilise GIT pour le contrôle de code source, donc y aurait-il un moyen d'utiliser un fichier GIT du hashcode pour le contrôle de version?

  • Est-il une solution qui va comprimer le javascript qui est sur la ligne régulière des fichiers HTML sans tuer le HTML?

  • Est-il une solution qui permettra de compresser et de la version de mon fichier CSS?

22voto

Taylor Leese Points 18895

Jetez un oeil à yuicompressor-maven-plugin . Il peut regrouper divers fichiers js (ainsi que css), les minimiser et les obscurcir.

11voto

Chris Dolan Points 5435

Voici un tout nouveau plugin Maven qui cible cette tâche: http://mojo.codehaus.org/webminifier-maven-plugin/

3voto

Ates Goral Points 47670

J'ai réussi à intégrer RequireJS optimisation (utilise Google Closure compiler + ne concaténation) dans un Maven de l'environnement (pour le single page app JS). Voir ma question et le suivi de la réponse pour plus de détails: RequireJS de Compilation dans le projet Maven avec JS externe dépendances

Vous pourriez probablement s'étendre à la version et l'archivage de l'minifiés JS artefacts.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X