Chcę porady ekspertów na temat łączenia i minimalizowania ASP.NET MVC. Mam w moich plikach skryptu projektu, które mają zarówno wersje nieskasowane (.js) i minified (.min.js). Mam włączone je w moim skryptu wiązki następująco:Łączenie i minimalizowanie ASP.NET - w tym już minified pliki dla pakietów produkcyjnych i niezminiaturowanych plików do rozwoju
bundles.Add(new ScriptBundle("~/bundles/layout").Include(
"~/Scripts/jquery-{version}.js",
"~/Scripts/lib/errorhandling.js",
"~/Scripts/lib/errorhandling.min.js",
"~/Scripts/vendor/modernizr.custom.js",
"~/Scripts/vendor/modernizr.custom.min.js",
"~/Scripts/toastr.js",
"~/Scripts/toastr.min.js"));
Wydaje się, że wiązka rzeczywiście zawiera tylko raz w pliku skryptu, a nie dwa razy. Potwierdziłem to zarówno dla rozwoju, jak i produkcji. (Na marginesie, w fazie rozwojowej, to znaczy, gdy debug = true, pakiety nie są renderowane, ale pliki są dołączane jako oddzielne znaczniki skryptów. Jest to również pożądane zachowanie dla mnie.)
Moje pytania to:
(1) Czy jest to najlepszy i zalecany sposób dołączania już zminimalizowanych plików do konfiguracji produkcji i nieopracowanych plików do programowania?
(2) Czy ASP.NET próbuje zminimalizować cały pakiet w produkcji (mimo że jest już zminimalizowany)? Jeśli tak, jaki jest najlepszy sposób, aby uniemożliwić program ASP.NET próbę zminimalizowania pakietu?
Z góry dzięki!
Ciekawe, sam nauczyłem się czegoś, nie zdawałem sobie sprawy, że framework wybrałby .min wersja automatycznie. Chyba powinienem spędzić trochę czasu w dokumentach osobiście. Zawsze brałem pakowanie w wartości nominalnej. – codenheim
Minimalne pliki często zawierają komentarze do map źródłowych: /*! jQuery v1.10.2 | (c) 2005, 2013 jQuery Foundation, Inc. jquery.org/license // @ sourceMappingURL = jquery-1.10.2.min.map */ Jeśli użyję pakietu, pozostaną w pakiecie. Czy to problem? Jeśli użyję ScriptBundle, ASP.NET je usunie. Czy powinienem zachować te komentarze w pakiecie, czy też powinny one zostać usunięte? –
W takim przypadku użycie metody Bundle() zamiast ScriptBundle() w już zminiaturyzowanych wersjach jest sposobem obejścia tego. Przynajmniej to jeden sposób. – codenheim