Asp.net-Mvc

僅在 MVC4 BundleConfig 中的縮小腳本

  • October 29, 2012

我在 BundleConfig 中添加以下 ScriptBundle:

   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 腳本失去了嗎?無論我是否在調試,我想要的是使用相同的縮小腳本。在發布條件下,腳本包含在捆綁的 JS 文件中。

我假設它看到了“最小”,尋找一個未縮小的版本,沒有找到一個,然後決定什麼是最好的就是完全忽略它。傑出的。如果我複制 load-image.min.js,將其命名為 load-image.js,然後在 BundleConfig 中將其引用為“load-image.*”,我發現它包含在兩種配置中,但必須這樣做有什麼意義去做?

我想我在這裡遺漏了一些東西。我沒有未縮小的版本,坦率地說我不在乎。它由我的 Bootstrap 圖片庫外掛使用,僅此而已。有什麼想法嗎?

此行為已在 1.1.0-alpha1 版本中得到改進(修復)。我們將所有舊的預設忽略列表條目移動到一個新的 DirectoryFilter 忽略列表中,該列表僅在包含 *.js 之類的搜尋模式時使用,這是此功能的原始意圖。因此,當您明確包含單個文件時,這應該不再是問題。

注意:這可能仍然是一個問題的一個地方是,如果您嘗試包含類似 jquery-{version}.min.js 的內容。

ignoreList,如果需要,您可以清除它,它看起來像:

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

更多詳細資訊:ASP.NET 捆綁和縮小的高級選項

引用自:https://stackoverflow.com/questions/13087527