asp.net mvc脚本bundle添加了所有文件



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

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

它加载原始Jquery版本和缩小版本。这两个文件都在Scripts文件夹中,所以我认为星号正是按照你说的做的

有没有一种方法可以在debug=false模式下只渲染缩小版本,而在debug=true模式下渲染原始版本?

还是实际上是指定了您想要的确切文件,而不是使用星号?

谨致问候,Jacques

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

虽然这个问题已经存在一年多了,但如果有人在同一问题上偶然发现它需要帮助,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"one_answers"FileX.js"时,选择".min"文件进行发布
  • 选择非".min"版本进行调试
  • 忽略"-vsdoc"文件(如jquery-1.7.1-vsdoc.js),这些文件仅由IntelliSense使用

请参阅MVC4 Bundle 中的Bundling and Minification和{version}通配符

不过,警告一下,如果目录中同时有jQuery-1.9.1.js和jQuery-1.10.2.js(例如),则这两个都将被匹配并添加到捆绑包中,这显然是不可取的。

还请注意,文件的缩小版本必须命名为file.min.js,而不是file-min.js或min.file.js才能正常工作。例如,当您通过NuGet获得YepNope库时,它的名称为YepNope.1.5.4-min.js,这意味着它和未优化的版本都被添加到捆绑包中。

最新更新