minify - example - Flujo de trabajo Bower y Grunt
grunt-contrib-watch (1)
Si estoy entendiendo correctamente, deberías echarle un vistazo a grunt-usemin . Puede envolver sus etiquetas js en <!-- build:js js/foo.js -->
. La tarea useminPrepare incluida en el paquete recorrerá los scripts (o css, o imágenes, etc.) que estén allí y los agregará dinámicamente a la tarea concat o uglify.
El único inconveniente que he encontrado es que la tarea de usemin es bastante lenta pero, con un poco de suerte, si se implementa esta solicitud de extracción , las cosas serán mucho más rápidas.
Solo quiero obtener una opinión sobre mi flujo de trabajo. Soy consciente de Yeoman y he decidido a propósito no usarlo. Mi flujo de trabajo es así:
- Ejecute
bower install
para instalar todas las dependencias de activos del proyecto. - Ejecuta
grunt
que copia todos los archivos js de la carpeta de componentes de bower en una nueva carpeta js y todos los archivos css en una nueva carpeta css. - Utilice aún más la tarea de grunt para concatenar y minificar todos los archivos js y css de las nuevas carpetas y ponerlos en una carpeta dist.
- Consulte la carpeta final de css y js in dist de HTML.
Una cosa que ciertamente no quiero hacer en mi tarea de grunt es realizar tareas específicas de dependencia, por ejemplo, tomar todo el archivo js de la carpeta bootstrap en la nueva carpeta js, luego tomar todo el archivo js de la carpeta prettyphoto en la nueva carpeta js. Quiero que la tarea de grunt sea lo más genérica posible para que pueda usar el mismo gruntfile en cualquier proyecto, sin importar cómo se vean las dependencias de bower. El motivo es si debería dedicar todo ese tiempo a escribir mi archivo gruñido para cada proyecto, ¿por qué no debería simplemente tomar los códigos fuente de todas las dependencias de manera convencional?
Entonces, hay un plugin grunt-contrib-copy para copiar archivos de un lugar a otro que utilizo para capturar todos los archivos js dentro de la carpeta de componentes del bower. El problema es que la mayoría de los componentes del bower vienen con una versión regular js y minificada. Por lo tanto, estoy copiando a los dos y concatenándolos y uglificándolos. Entonces código duplicado!
¿Mi flujo de trabajo tiene sentido? Es así, ¿cómo puedo deshacerme del problema que mencioné en el párrafo anterior?