J'ai créé une webapp sophistiquée basée sur une seule page, basée sur ajax, qui utilise un service Web backend RESTful desservant JSON. Le javascript est divisé en de nombreux fichiers différents, chaque fichier représentant une sorte de fonctionnalité ou de composant.
Alors que le service a été testé alpha, je viens de servir tous ces fichiers séparément sans minification. Mais maintenant que je voudrais lancer une version beta, j'ai vraiment besoin de combiner des fichiers, de les réduire et de les versionner. Je veux ajouter ceci à mon processus de construction, en utilisant Maven.
J'utilise les "types" de fichiers javascript suivants, dont # 3 et # 4 sont mes préoccupations:
J'aimerais faire ce qui suit pendant mon processus de construction:
app-2.0.6.min.js
, où 2.0.6 est la version du projet maven.feature-abc-56ab32de29.min.js
, où 56ab32de29 est le numéro de version de ce fichier spécifique.<script>
balises pour pointer vers des fichiers javascript avec les numéros de version corrects.Existe-t-il un plugin maven qui aidera à la concaténation?
Existe-t-il un plugin maven qui aidera à la minification? Idéalement, j'aimerais utiliser Google Closure Compiler, mais travailler avec d'autres si c'est plus simple.
Existe-t-il un plugin maven qui aidera à la gestion des versions?
Existe-t-il un moyen de faire en sorte que les fichiers javascript de type 4 aient des numéros de version indépendants? Idéalement, si un fichier ne change pas entre la version 2.0.5 et la version 2.0.6, les utilisateurs n'ont pas besoin de télécharger une nouvelle version et leur version mise en cache fonctionnerait bien. J'utilise GIT pour le contrôle de source, donc y aurait-il un moyen d'utiliser le code de hachage GIT d'un fichier pour le contrôle de version?
Existe-t-il une solution qui compressera le javascript qui est en ligne dans les fichiers HTML normaux sans tuer le HTML?
Existe-t-il une solution qui compressera et versionnera également mes fichiers CSS?
Jetez un oeil à yuicompressor-maven-plugin . Il peut agréger divers fichiers js (ainsi que css) ainsi que les réduire et les obscurcir.
Voici un tout nouveau plugin Maven qui cible cette tâche: http://mojo.codehaus.org/webminifier-maven-plugin/
J'ai réussi à intégrer l'optimisation RequireJS (utilise le compilateur Google Closure + fait la concaténation) dans un environnement Maven (pour l'application JS d'une seule page). Voir ma question et la réponse de suivi pour plus de détails: Compilation RequireJS dans le projet Maven avec les dépendances JS externes
Vous pouvez probablement développer cela pour versionner et archiver les artefacts JS minifiés.