当文件的本地缩小版且不时,捆绑/缩小的预期行为是什么?
我认为,当找到本地.min.js文件 时,它将使用它(当针对发布进行优化时),如果调试它将使用另一个。当针对发布进行优化但没有找到.min.js文件时,我认为它会相应地缩小该文件。
但是,我发现尽管我的脚本文件夹中有一个.min.js文件,但是在bundle(在发行版中)输出的文件与之相同 - 它已被更改。
我应该补充一点,这些已经在Bundle.config中添加为ScriptBundles,并且所有转换/忽略列表等都保留为默认值。
在第三方库(如jQuery)的情况下出现问题。我不希望它们提供的文件被捆绑过程缩小 - 只是为了使用已经提供的缩小文件。
感谢。
答案 0 :(得分:0)
默认情况下,使用ScriptBundle
类注册脚本包时,无论.min.js如何,所有包含的文件都将再次缩小。这是因为ScriptBundle
使用了特定的IBundleTransform
实现,它总是缩小javascript文件。
要覆盖此行为,可以使用虚拟实现:
public class NoTransform : IBundleTransform
{
public void Process(BundleContext context, BundleResponse response)
{
}
}
注册捆绑包:
bundles.Add(new Bundle("~/bundles/jquerynotransform", new NoTransform()).Include("~/Scripts/jquery-{version}.js"));
答案 1 :(得分:0)
您的假设是正确的。
如果存在本地缩小版 ,则在发生捆绑时,即将使用的版本。 将再次进行缩小,你可以告诉它,因为它删除了jQuery说你必须保留的许可注释(详见How can I preserve comments that matter in MVC 4 style bundling?),也可以重命名变量。
如果本地缩小版 不存在,那么它将使用未经分类的版本,该版本将通过捆绑/缩小。
因此,在这两种情况下,它都将通过缩小。