javascript git build maven minify

Plugin Maven para versionar y minificar javascript



git build (3)

Aquí hay un nuevo plugin Maven que apunta a esta tarea: http://mojo.codehaus.org/webminifier-maven-plugin/

Aplicación de JavaScript de una sola página

He creado una aplicación web de una sola página sofisticada ajax que utiliza un servicio web back-end RESTful que presta servicios a JSON. El javascript está dividido en muchos archivos diferentes, cada archivo representa algún tipo de característica o componente.

Mientras que el servicio ha estado en pruebas alpha , acabo de servir todos estos archivos por separado sin minificación. Pero ahora que me gustaría lanzar una versión beta , realmente necesito combinar archivos, minimizarlos y versionarlos. Quiero agregar esto a mi proceso de compilación, usando Maven.

Tipos de archivos Javascript

Estoy usando los siguientes "tipos" de archivos javascript, de los cuales el # 3 y el # 4 son mis inquietudes:

  1. Archivos externos, tales como jquery y jquery-ui servidos desde Google CDN. Rara vez cambian estas versiones, se pueden manejar de forma manual.
  2. Complementos de Jquery que estoy hospedando, como fullcalendar o ui-layout. Una vez más, raramente los actualizo a nuevas versiones y puedo manejarlos manualmente.
  3. Código de javascript de aplicación completa. JavaScript personalizado que se extiende a través de muchos archivos y puede cambiar ocasionalmente. Todos estos archivos deben cargarse para que la aplicación funcione.
  4. Código javascript específico de la función. JavaScript personalizado que se carga a pedido cuando se solicita una función específica. Este código puede cambiar con bastante frecuencia y no se carga al inicio.

Desarrollar objetivos

Me gustaría hacer lo siguiente durante mi proceso de compilación:

  • Concatenar todos los archivos javascript de tipo 3 juntos, minimizarlos y guardarlos como un solo archivo con un número de versión. Por ejemplo: app-2.0.6.min.js , donde 2.0.6 es la versión del proyecto maven.
  • Todos los archivos de tipo 4 deben ser minificados individualmente y guardados como archivos separados con números de versión en el nombre. Por ejemplo: feature-abc-56ab32de29.min.js , donde 56ab32de29 es el número de versión de ese archivo específico.
  • Actualice archivos HTML con etiquetas <script> para apuntar a archivos javascript con los números de versión correctos.
  • Actualice los archivos Javscript que cargan el tipo 4 y los archivos javascript apuntan a las versiones correctas.

Preguntas

  • ¿Hay un complemento maven que ayude con la concatenación?

  • ¿Hay un complemento maven que ayude con la minificación? Idealmente, me gustaría utilizar Google Closure Compiler, pero trabajaría con otros si fuera más simple.

  • ¿Hay un complemento maven que ayude con el control de versiones?

  • ¿Hay alguna manera de que los archivos javascript tipo 4 tengan números de versión independientes? Idealmente, si un archivo no cambia entre la versión 2.0.5 y 2.0.6, no hay necesidad de que los usuarios descarguen una nueva versión y su versión en caché funcionaría bien. Estoy usando GIT para control de fuente, entonces ¿habría alguna manera de usar el código hash GIT de un archivo para versionar?

  • ¿Hay alguna solución que comprima el javascript que está en línea en los archivos HTML normales sin matar al HTML?

  • ¿Hay alguna solución que pueda comprimir y versionar mis archivos CSS también?



He incorporado con éxito la optimización RequireJS (utiliza el compilador de cierre de Google + concatenación) en un entorno Maven (para una sola página de la aplicación JS). Vea mi pregunta y la respuesta de seguimiento para más detalles: Recopilación RequireJS en el proyecto Maven con dependencias JS externas

Probablemente podrías ampliar eso a la versión y archivar los artefactos JS minificados.