angularjs gruntjs yeoman bower

angularjs - Activos que faltan en la aplicación Angular construida con grunt



yeoman angularjs (4)

He construido una aplicación utilizando Yeoman y AngularJS (y todas las cosas que la acompañan, como Grunt y Bower).

Todo funciona perfectamente cuando se ejecuta localmente utilizando el grunt serve . Sin embargo, después de ejecutar grunt e implementar la aplicación, faltan un par de recursos y no estoy seguro de cuál es la mejor manera de resolverlos.

En primer lugar, la ejecución de Grunt parece copiar las imágenes a través de dist, pero las cambia de nombre sin ajustar las referencias en el CSS. app/images/uparrow.png convierte en dist/images/3f84644a.uparrow.png .

Aquí hay una línea del main.scss:

.table.sortable th.sorted-asc { background-image: url(../images/uparrow.png); }

Cuando se compila en CSS durante el proceso de construcción, no vuelve a escribir la ruta, por lo que el navegador intenta cargar dist/images/uparrow.png que falta.

En segundo lugar, hay un problema con la carga de las fuentes para el complemento Bootstrap. El CSS bootstrap en la app/bower_components/bootstrap/dist/css/bootstrap.css referencia a ../fonts/glyphicons-halflings-regular.woff . La ruta relativa se resuelve en app/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.wof y eso funciona perfectamente.

Sin embargo, una vez creado, el proveedor CSS se combina y minimiza en un solo archivo CSS en dist/styles/8727a602.vendor.css . Sin embargo, la ruta relativa a la fuente no se vuelve a escribir. Por lo tanto, intenta buscar fuentes en la carpeta dist/fonts , en lugar de dist/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.wof donde está el archivo.

Cualquier consejo muy apreciado.


Encontré una solución clara para el problema de CSS: SCSS tiene funciones incorporadas para imágenes y esto reescribirá automáticamente las rutas a los activos:

.table.sortable th.sorted-asc { background-image: image-url(''uparrow.png''); }


Te enfrentas a errores de Yeoman con la tarea de build que aún no está solucionada. Creo que no hay soluciones limpias, así que aquí hay algunas soluciones.

Primero, imagen rev:

Simplemente elimine las imágenes de la tarea rev y estará listo para comenzar.

rev: { dist: { files: { src: [ ''<%= yeoman.dist %>/scripts/{,*/}*.js'', ''<%= yeoman.dist %>/styles/{,*/}*.css'', // ''<%= yeoman.dist %>/images/{,*/}*.{png,jpg,jpeg,gif,webp,svg}'', <- remove that line ''<%= yeoman.dist %>/styles/fonts/*'' ] } } },

En segundo lugar, las fuentes bootstrap-sass no se copian en la carpeta dist. Pasé horas en este error y no pude encontrar una solución adecuada. Finalmente decidí agregar una nueva regla a la tarea de copy :

copy: { dist: { files: [{ // your existing rules... }, // add this rule to copy the fonts: { expand: true, flatten: true, cwd: ''<%= yeoman.app %>'', dest: ''<%= yeoman.dist %>/fonts'', src: [''bower_components/sass-bootstrap/fonts/*.*''] }] }, ... }

Ejecute grunt build nuevamente después de estos cambios y debería funcionar.


Tuve exactamente el mismo problema y lo resolví por:

1) Agregue a la tarea de copia (dentro del gruntfile) las fuentes bootstrat: {expand: true, cwd: ''src / main / webapp / bower_components / bootstrap / dist'', src: ''fonts / *'', dest: ''<% = yeoman.dist%> / asset / ''} Eso copiará las fuentes bootstrap en su carpeta dist / assests / fonts.

2) Elimine la tarea cssmin o comente el parámetro raíz. Eso debería resolver tu problema con respecto a los caminos.

Para obtener más información, consulte esta publicación que incluye una explicación detallada: [ http://ignaciosuay.com/how-to-avoid-grunt-build-not-loading-bootstrap-glyphicons-using-jhipster/


cssmin con opción de raíz reemplaza todas las rutas relativas.

puede desactivar la opción raíz de cssmin en su archivo Gruntfile.js

cssmin: { options: { //root: ''<%= yeoman.app %>'' } },