2009-08-18 15 views
11

Quiero usar YUI Compressor (el original) y usarlo como parte de los procesos de compilación de MS típicos (Visual Studio 2008, MSBuild).Compresor YUI y aplicaciones .NET

¿Alguien tiene alguna orientación o idea sobre esto? Por ejemplo, buenas maneras de incorporar al proyecto, qué hacer con las referencias existentes de CSS y JS, y cosas por el estilo.

Me alegra escuchar sobre los beneficios de YUI Compressor .NET y alternativas, pero estoy más interesado en el uso del original.

Gracias a Scott

+2

Se formuló una pregunta similar aquí: http://stackoverflow.com/questions/1295395/minify-merge-javascript-minify-css-on-visual-studio-build – Alex

Respuesta

9

que utilizan ambos. El compresor YUI es de línea de comandos y fácil de integrar en cualquier proceso de compilación. Lo tengo funcionando en rastrillo sin problemas.

Probablemente sea más común realizar la compresión de javascript/css en el momento de la implementación. De esta forma, no es necesario actualizar las referencias de JS. Pero estoy usando otro método en mi sitio. Tengo los archivos comprimidos creados como *-min.js, etc. Para incluir un script o archivo css en mi página, que llamar a un método en el servidor:

<%= ScriptSrc("~/assets/myscript.js") %> 
<%= LinkSrc("~/assets/main.css") %> 

Estos métodos hacen lo siguiente:

  1. Ampliar la ruta relativa a la aplicación
  2. agregar una cadena de versión al final (para la invalidación de caché)
  3. elegir entre la secuencia de comandos completa y una versión minificada, dependiendo de si estamos en modo de depuración o no.

En el modo de depuración, ScriptSrc fuerza seria algo como esto:

 
<script type="text/javascript" src="http://stage.myapp.com/assets/myscript.js?v=1.2" ></script> 

pero en la producción sería cargar la versión minified:

 
<script type="text/javascript" src="http://stage.myapp.com/assets/myscript-min.js?v=1.2" ></script> 

Uno de los beneficios de esto es que me puede cambiar entre las versiones completa y minificada simplemente cambiando el web.config, que puede ayudar a la eliminación de errores.

1

Como el compresor YUI es simplemente una herramienta de línea de comandos, puede llamarlo como parte de una acción Pre o Post Build. (Si profundizas lo suficiente en MSBuild, puedes dejar que se ejecute solo cuando los archivos han cambiado, acelerando tus compilaciones normales; VS es bastante indulgente cuando se trata de acciones de MSBuild personalizadas en tu archivo de proyecto.)

Podrías use la respuesta de Gabe como una guía sobre cómo desarrollar usando dicha configuración; también podría durante el Render de, digamos, una página maestra traducir todas las URLs no minificadas en su <head> con URLs minificadas (un poco complicado, ya que las etiquetas <script> aparecerán en el medio de la propiedad Text de LiteralControl s).

0

He usado directivas del compilador para mi guión incluida- por ejemplo (en la página maestra);

... 
    <% #if RELEASE %> 
    <script src="Scripts/combined.min.js" type="text/javascript"></script> 
    <% #else %> 
    <script src="Scripts/myscript1.js" type="text/javascript"></script> 
    <script src="Scripts/myscript2.js" type="text/javascript"></script> 
    <% #endif %> 
</body> 
</html> 

Luego en el proceso de construcción mis varios.Los archivos js se combinan en un solo archivo conbined.min.js.