仅在MVC4 BundleConfig中缩小脚本

get*_*ode 9 asp.net-mvc bundle razor asp.net-mvc-4 asp.net-optimization

我在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"));
Run Code Online (Sandbox Code Playgroud)

这在我的_Layout.cshtml末尾被引用为:

@Scripts.Render("~/bundles/javascript")
Run Code Online (Sandbox Code Playgroud)

调试时我注意到这个脚本呈现的输出是:

<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>
Run Code Online (Sandbox Code Playgroud)

注意load-image.min.js脚本丢失了?我想要的是使用相同的缩小脚本,无论我是否正在调试.在发布条件下,脚本包含在捆绑的JS文件中.

我认为它正在看'min',寻找一个未缩小的版本,而不是找到一个,然后决定什么是最好的完全忽略它.辉煌.如果我复制了load-image.min.js,请将其命名为load-image.js,然后在BundleConfig中将其作为"load-image.*"引用.我发现它包含在两个配置中但是有什么意义去做?

我想我在这里错过了一些东西.我没有非缩小版本,坦率地说我并不关心它.它被我的Bootstrap图像库插件使用,没有别的.有什么想法吗?

web*_*per 5

There is ignoreList, which you can clear if you need, it looks like:

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");
    }
}
Run Code Online (Sandbox Code Playgroud)

更多细节:ASP.NET捆绑和缩小的高级选项


Hao*_*ung 5

此行为已在1.1.0-alpha1版本中得到改善(修复)。我们将所有旧的默认忽略列表条目移到了一个新的DirectoryFilter忽略列表中,该列表仅在包括* .js之类的搜索模式时才使用,这是此功能的原始意图。因此,当您明确包含单个文件时,这不再是问题。

注意:这可能仍然是一个问题,如果您尝试包含类似jquery- {version} .min.js的内容。