asp.net - route - tag helpers asp net core
IItemTransform y archivos minificados existentes (2)
TL; DR : IItemTransform
no se ejecuta cuando ya existe un archivo minified en la misma carpeta que el archivo original (no minified).
Explicación del problema
Estoy teniendo este problema principalmente debido a las referencias de imagen relativas de CSS. Si usó IItemTransform
con archivos Javascript, se aplica lo mismo.
Esto es lo que estoy usando:
- Estoy usando Visual Studio con el complemento de Web Essentials para tener soporte para archivos LESS
- Estoy escribiendo archivos LESS y tengo el complemento de Web Essentials que minimiza automáticamente los archivos guardados
- También estoy usando agrupación y minificación en mi proyecto
- Al crear paquetes CSS, estoy usando
CssRewriteUrlTransform
para hacer que las URL de CSS sean absolutas (es decir, imágenes de fondo) para que las imágenes sigan funcionando después de agrupar varios archivos CSS
Nada inusual aquí hasta ahora, pero no funciona.
¿Cuál parece ser el problema?
La forma en que funciona la agrupación y la minificación es que intenta evitar el procesamiento excesivo. Esto significa que cuando existe un archivo minificado en la misma carpeta que el original, no ejecutará su propia minificación y más bien servirá el archivo existente.
Esto estaría bien siempre y cuando al menos ejecute transformaciones sobre los archivos minificados preexistentes. Pero no es así. Así que termino con direcciones URL relativas en un paquete que rompe casi todos esos recursos.
Soluciones
- Proporcionar siempre rutas absolutas en archivos MENOS
- Deshabilitar la minificación de archivos al guardar en la configuración de Web Essentials
- Consulte los archivos minificados cuando defina mis paquetes porque no tienen una versión minificada (* .min.css no tiene un * .min.min.css), por lo que Minifier realmente recoge el archivo y minimiza mientras ejecuta las transformaciones. eso.
Desde el punto de vista de mi proceso de desarrollo y de las herramientas utilizadas (y configuradas como son), esto parece un error. Si esos archivos fueran el resultado del mismo proceso de minificación, esto no sería un error, ya que las transformaciones se ejecutarán cuando se ejecute la minificación. Es cierto que tal funcionalidad no existe y probablemente nunca lo hará ya que la aplicación necesitará permisos de escritura para que funcione. Resultado: esto es un error . Los archivos minificados existentes deben procesarse a través de transformaciones antes de ser almacenados en caché.
Pregunta
¿Es posible convencer de alguna manera el agrupamiento y la minificación a:
- no usar versiones de archivos minified existentes
- Ejecutar transformaciones sobre versiones minimizadas existentes.
¿Has considerado usar Grunt? http://gruntjs.com/
Tiene una curva de aprendizaje, pero el grupo de información es enorme. Los problemas que tenga con los elementos esenciales de la web no serían un problema con el gruñido.
Lo estoy usando en VS, ahora, para minimizar, agrupar y transcribir tanto css como javascript, así como reorganizar archivos en un directorio de implementación. Una vez que haya configurado una estructura de directorios, un archivo grunt podría reutilizarse fácilmente.
Con el complemento en VS (vinculado, a continuación), puede hacer clic derecho en el archivo grunt y seleccionar las tareas grunt para ejecutar desde un menú emergente.
https://visualstudiogallery.msdn.microsoft.com/dcbc5325-79ef-4b72-960e-0a51ee33a0ff
Las "tareas" grundas a medida que se llaman pueden crearse mediante la descarga de varios complementos, es decir, https://www.npmjs.com/package/grunt-contrib-less .
Nunca he usado LESS o elementos esenciales de la web, así que por favor tome esta publicación para lo que vale (no mucho). ¿Podría agregar un comando de compilación previa para simplemente eliminar los archivos antiguos, luego hacer una reconstrucción cuando necesite actualizar el CSS? .