8

dodaję następujące ScriptBundle w BundleConfig:minified skrypt tylko w MVC4 BundleConfig

bundles.Add(new ScriptBundle("~/bundles/javascript").Include(
     "~/Scripts/jquery-1.*", 
     "~/Scripts/load-image.min.js", 
     "~/Scripts/bootstrap.*", 
     "~/Scripts/bootstrap-image-gallery.*", 
     "~/Scripts/my.global.js")); 

ten odwołuje się do końca mojego _Layout.cshtml jak:

@Scripts.Render("~/bundles/javascript") 

Kiedy widzę, że debugowanie dane wyjściowe tego renderowania skryptu to:

<script src="/Scripts/jquery-1.8.2.js"></script> 
<script src="/Scripts/bootstrap.js"></script> 
<script src="/Scripts/bootstrap-image-gallery.js"></script> 
<script src="/Scripts/my.global.js"></script> 

Należy zauważyć, że skrypt load-image.min.js jest missi ng? Chcę tylko użyć tego samego skróconego skryptu, niezależnie od tego, czy debuguję, czy nie. W warunkach zwolnienia skrypt jest zawarty w dołączonym pliku JS.

Zakładam, że widzę "min", szukając wersji nie-minifikowanej, a nie znajdującej, a następnie decydując, co jest najlepsze, należy ją całkowicie zignorować. Znakomity. Jeśli tworzę kopię load-image.min.js, nazwij ją load-image.js, a następnie powiąż ją w BundleConfig jako "load-image. *". Uważam, że jest ona zawarta w obu konfiguracjach, ale jaki jest sens Zrób to?

Zakładam, że czegoś tutaj brakuje. Nie mam wersji nie-minifikowanej i szczerze mówiąc, nie przejmuję się tym. Używa go moja wtyczka do galerii obrazów Bootstrap i nic więcej. Jakieś pomysły?

+0

+1 dla "wtedy decydując, co jest najlepsze, należy całkowicie zignorować. Genialne. "Tak się dzieje często :) – ppumkin

Odpowiedz

4

To zachowanie zostało poprawione (stały) w 1.1.0-alfa1 wydanie. Przenieśliśmy wszystkie stare domyślne wpisy listy ignorowanych do nowej listy ignorowania DirectoryFilter, które są używane tylko wtedy, gdy uwzględni się wzorce wyszukiwania, takie jak * .js, co było pierwotnym zamierzeniem tej funkcji. W związku z tym nie powinno to już stanowić problemu w przypadku jawnego dodawania pojedynczych plików.

Uwaga: jedynym miejscem, w którym może to nadal być problem, jest próba włączenia jquery- {version} .min.js.

+0

Czy mógłbyś rozwinąć? Jak możemy przezwyciężyć to? Jaką wersję oprogramowania używasz (1.1.0-alpha1)? Czy możesz pokazać przykład, w jaki sposób można jawnie dołączyć plik (np. 'Test.min.js'), gdy brakuje nieminyfikowanej. – Odys

5

Jest ignoreList, które można usunąć, jeśli trzeba, to wygląda:

public static void AddDefaultIgnorePatterns(IgnoreList ignoreList) 
{ 
    if (ignoreList != null) 
    { 
     ignoreList.Ignore("*.intellisense.js"); 
     ignoreList.Ignore("*-vsdoc.js"); 
     ignoreList.Ignore("*.debug.js", OptimizationMode.WhenEnabled); 
     ignoreList.Ignore("*.min.js", OptimizationMode.WhenDisabled); 
     ignoreList.Ignore("*.min.css", OptimizationMode.WhenDisabled); 
     return; 
    } 
    else 
    { 
     throw new ArgumentNullException("ignoreList"); 
    } 
} 

Więcej szczegółów: Advanced Options of ASP.NET Bundling and Minification

+0

Dziękuję @webdeveloper - szybkie spojrzenie na to wskazuje, że aby osiągnąć to, czego chcę, będę musiał wyczyścić tę listę ignorowanych i ponownie zapełnić się jawnymi nazwami plików. Oczywiście chciałbym zachować możliwość ignorowania minified plików w rozwoju, ale z tym jednym wyraźnym wyjątkiem. Czy wiesz, czy to jest możliwe? – getsetcode

+0

@tomtroughton Ta lista działa według maski, bez potrzeby wpisywania jawnych nazw plików. Możesz również użyć '#ifdef DEBUG', aby napisać jakąś logikę tylko do debugowania. – webdeveloper

+0

można ustawić 'BundleTable.EnableOptimizations = true;', aby włączyć minifikację w trybie debugowania, więc nie zignorowałby plików .min, ale myślę, że to nie jest dokładnie to, co zamierzałeś zrobić, ponieważ cały pakiet będzie zminimalizowany i twardy do debugowania. – Kevkong