8

我加入以下ScriptBundle在BundleConfig:精縮腳本只在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")); 

這是在我的_Layout.cshtml年底爲引用:

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

調試時我注意到,該腳本呈現的輸出爲:

<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> 

注意load-image.min.js腳本是missi NG?我想要的是使用相同的縮小腳本,無論我是否正在調試。在發佈條件下,該腳本包含在捆綁的JS文件中。

我認爲它看到'min',尋找一個未縮小的版本,沒有找到一個,然後決定什麼是最好的就是完全忽略它。輝煌。如果我複製load-image.min.js,將其稱爲load-image.js,然後在BundleConfig中將其作爲「load-image。*」引用它。我發現它包含在兩個配置中,但是必須去做?

我想我在這裏錯過了一些東西。我沒有未縮小的版本,我坦率地不關心它。它被我的Bootstrap圖庫插件使用,沒有別的。那裏有任何想法?

+0

+1對於'然後決定什麼是最好的就是完全忽略它。 Brilliant.'這種方式往往:) – ppumkin

回答

4

此行爲已改善(固定):

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"); 
    } 
} 

更多細節發佈。我們將所有舊的默認忽略列表條目移動到一個新的DirectoryFilter忽略列表中,這些列表僅在包含像* .js這樣的搜索模式時才使用,這是該功能的最初意圖。因此,當您明確包含單個文件時,這應該不再是問題。

注意:如果你嘗試包含類似jquery- {version} .min.js的東西,那麼這個問題仍然存在。

+0

請您詳細說明一下嗎?我們怎樣才能克服這一點?你指的是什麼軟件版本(1.1.0-alpha1)? 你能舉出一個例子,說明如何在未縮小的情況下明確包含一個文件(例如'test.min.js')。 – Odys

5

ignoreList,而如果你需要,你可以清除,它看起來像:在0.9.6 Advanced Options of ASP.NET Bundling and Minification

+0

謝謝@webdeveloper - 快速瀏覽一下這將表明,要實現我想要的,我需要完全清除這個忽略列表並重新填充顯式文件名。很明顯,我想保留在開發過程中忽略縮小文件的能力,但有一個明確的例外。你知道這可能嗎? – getsetcode

+0

@tomtroughton該列表按掩碼工作,無需輸入顯式文件名。你也可以使用'#ifdef DEBUG'來編寫一些只用於調試的邏輯。 – webdeveloper

+0

你可以設置'BundleTable.EnableOptimizations = true;'在調試模式下啓用縮小,所以他不會忽略.min文件,但我想這不完全是,你打算做什麼,導致整個捆綁將被縮小和硬進行調試。 – Kevkong