2009-08-18 5 views
11

Voglio utilizzare YUI Compressor (l'originale) e utilizzarlo come parte dei tipici processi di generazione MS (Visual Studio 2008, MSBuild).Compressore YUI e app .NET

Qualcuno ha qualche guida o pensieri su questo? Ad esempio, buoni modi per incorporare nel progetto, cosa fare con i riferimenti CSS e JS esistenti e simili.

Sono felice di sentire i vantaggi di YUI Compressor .NET e delle alternative, ma sono più interessato all'uso dell'originale.

Grazie Scott

+2

Ho chiesto una domanda simile qui: http://stackoverflow.com/questions/1295395/minify-merge-javascript-minify-css-on-visual-studio-build – Alex

risposta

9

Io uso sia. Il compressore YUI è a linea di comando e facile da integrare in qualsiasi processo di costruzione. L'ho preso in giro a rastrello senza problemi.

Probabilmente è più comune eseguire la compressione javascript/css sul posto quando si distribuisce. In questo modo non devi aggiornare i riferimenti JS. Ma sto usando un altro metodo sul mio sito. Ho i file compressi creati come *-min.js, ecc Per includere uno script o un file css sulla mia pagina, ho chiamare un metodo lato server:

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

Questi metodi fanno la seguente:

  1. Expand il percorso relativo all'app
  2. aggiungere una stringa di versione alla fine (per invalidazione della cache)
  3. scegliere tra lo script completo e una versione ridotta a seconda che si sia in modalità di debug o meno.

In modalità di debug, ScriptSrc output potrebbe qualcosa di simile:

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

ma in produzione sarebbe caricare la versione minified:

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

Uno dei vantaggi di questo è che io è possibile passare dalla versione completa a quella ridotta semplicemente cambiando lo web.config, che può facilitare il debug.

1

Poiché il compressore YUI è semplicemente uno strumento da riga di comando, è possibile chiamarlo come parte di un'azione Pre o Post Build. (Se approfondisci abbastanza in MSBuild, puoi lasciarlo girare solo quando i file sono cambiati, velocizzando le tue build regolari, VS è piuttosto clemente quando si tratta di azioni personalizzate di MSBuild nel file di progetto.)

utilizzare la risposta di Gabe come linea guida su come sviluppare utilizzando tale impostazione; potresti anche durante il Render di, ad esempio, una pagina principale traduci tutti gli URL non miniati nel tuo <head> con URL min. (un po 'complicato, poiché i tag <script> verranno visualizzati nel mezzo della proprietà Text di LiteralControl s).

0

Ho usato direttive del compilatore per il mio script comprende-per esempio (nella pagina master);

... 
    <% #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> 

Quindi nel processo di costruzione i miei vari.i file js sono combinati tutti in un file conbined.min.js.