2009-08-18 13 views
11

Chcę używać kompresora YUI (oryginalnego) i używać go jako części typowych procesów budowania MS (Visual Studio 2008, MSBuild).Kompresor YUI i .NET

Czy ktoś ma jakieś wskazówki lub przemyślenia na ten temat? Na przykład dobre sposoby na włączenie do projektu, co zrobić z istniejącymi referencjami CSS i JS i tym podobne.

Cieszę się, że słyszę o zaletach YUI Compressor .NET i alternatywach, ale jestem bardziej zainteresowany wykorzystaniem oryginału.

Dzięki Scott

+2

Zadano podobne pytanie tutaj: http://stackoverflow.com/questions/1295395/minify-merge-javascript-minify-css-on-on-studio-build – Alex

Odpowiedz

9

używam obu. Kompresor YUI jest linią poleceń i można go łatwo zintegrować z dowolnym procesem kompilacji. Mam go uruchomionego w grabie bez żadnych problemów.

Najprawdopodobniej najczęściej wykonuje się kompresję javascript/css w miejscu podczas wdrażania. W ten sposób nie trzeba aktualizować referencji JS. Ale używam innej metody w mojej witrynie. Mam skompresowane pliki utworzone jako *-min.js itp Aby dołączyć skrypt lub plik css na mojej stronie, nazywam metody po stronie serwera:

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

Te metody wykonaj następujące czynności:

  1. Rozwiń ścieżka względna aplikacji:
  2. dodać ciąg wersji do końca (w przypadku unieważniania pamięci podręcznej)
  3. wybrać między pełnym skryptem i wersją minified w zależności od tego, czy jesteśmy w trybie debugowania, czy nie.

W trybie debugowania, ScriptSrc Wynik może coś takiego:

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

ale w produkcji byłoby załadować minified wersję:

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

Jedną z zalet jest to, że można przełączać między wersjami pełną i zminiaturyzowaną, zmieniając tylko web.config, co może pomóc w debugowaniu.

1

Ponieważ kompresor YUI jest po prostu narzędziem wiersza poleceń, można go nazwać jako część akcji przed lub po kompilacji. (Jeśli wystarczająco zagłębisz się w MSBuild, możesz pozwolić mu działać tylko po zmianie plików, przyspieszając regularne kompilacje, VS jest dość łagodny, jeśli chodzi o niestandardowe działania MSBuild w pliku projektu.)

Możesz skorzystaj z odpowiedzi Gabe'a jako wskazówki, jak się rozwijać przy użyciu takiej konfiguracji; możesz także podczas Render z, powiedzmy, strony wzorcowej przetłumaczyć wszystkie niezminimowane adresy URL w swoim <head> za pomocą minified url (trochę trudne, ponieważ znaczniki <script> pojawią się w środku właściwości Text s).

0

mam używany dyrektyw kompilatora dla mojego skryptu zawiera-na przykład (na stronie głównej);

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

Następnie w procesie budowy moje różne.Pliki js są łączone w jeden plik conbined.min.js.