【问题标题】:asp.net mvc script bundle adding all the filesasp.net mvc 脚本包添加所有文件
【发布时间】:2012-07-30 13:59:49
【问题描述】:

当您添加脚本包并具有以下内容时:

bundles.Add(new ScriptBundle("~/bundles/base.scripts").Include(
                            "~/Scripts/jquery-1*"));

它加载原始 Jquery 版本和缩小版本。这些文件都在 Scripts 文件夹中,所以我假设星号完全按照你说的做。

有没有办法在 debug=false 模式下只呈现缩小版本,在 debug=true 下呈现原始版本?

或者它是否归结为实际指定您想要的文件而不是使用星号?

问候, 雅克

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-4 asp.net-optimization


    【解决方案1】:

    这应该通过 BundleCollection 的 FileExtensionReplacementList 自动发生,当 debug=false 时,它​​应该选择文件的 .min 版本。创建新项目时的默认模板也应该使用此功能。

    【讨论】:

    • 谢谢郝。如果这没有发生,我需要检查什么?另外,您是否有一个链接,我可以在其中阅读有关预期行为的信息?
    • 目前还没有任何好的文档,但霍华德在他的演讲中对此做了一些演示:channel9.msdn.com/Events/aspConf/aspConf/…
    • 谢谢豪,我去看看链接
    【解决方案2】:

    虽然这个问题现在已经有一年多了,但如果有人偶然发现它需要关于同一问题的帮助,Bundling 引入了 {version} 通配符,它​​使用正则表达式来查找典型的版本号模式(例如作为 1.9.1),这样当您手动或通过 NuGet 更新包时,您不必去更改您的 Bundles 配置。

    从名为 .min.js 和 .js 的文件中进行选择也足够聪明——在发布配置中使用前者,在调试中使用后者,这正是 OP 所追求的。

    对于 ASP.NET MVC 4,这意味着使用调试配置,文件 jquery-1.7.1.js 将被添加到包中。在一个版本中 配置,jquery-1.7.1.min.js 将被添加。捆绑 框架遵循几个常见的约定,例如:

    • 当“FileX.min.js”和“FileX.js”存在时选择“.min”文件发布。
    • 选择非“.min”版本进行调试。
    • 忽略仅由 IntelliSense 使用的“-vsdoc”文件(例如 jquery-1.7.1-vsdoc.js)。

    Bundling and Minification{version} wildcard in MVC4 Bundle

    但是,如果您在目录中同时拥有 jQuery-1.9.1.js 和 jQuery-1.10.2.js(例如),那么 both 将被匹配并添加到bundle - 显然是不可取的。

    还要注意,file 的缩小版本必须命名为 file.min.js,而不是 file-min.js 或 min.file.js 才能正常工作。例如,当您通过 NuGet 获取 YepNope 库时,它的名称为 yepnope.1.5.4-min.js,这意味着该库和未缩小版本都已添加到包中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-23
      • 1970-01-01
      • 1970-01-01
      • 2019-10-13
      • 1970-01-01
      • 2011-03-11
      • 1970-01-01
      • 2014-09-04
      相关资源
      最近更新 更多