我正在尝试使用ASP.Nets BundleTable来优化一些
javascript文件,但是遇到了一个问题,当代码被缩小时,特定的插件(jQuery-Timepicker)无法工作.见
here.
捆绑代码目前类似于:
// Add our commonBundle var commonBundle= new Bundle("~/CommonJS" + culture.ToString()); // JQuery and related entries. commonBundle.Include("~/Scripts/jquery-1.7.2.js"); commonBundle.Include("~/Scripts/jquery-ui-1.8.22.js"); commonBundle.Include("~/Scripts/jquery.cookie.js"); commonBundle.Include("~/Scripts/jquery-ui/jquery-ui-timepicker-addon.js"); // This is the one that does not work when bundled // JS Transformer commonBundle.Transforms.Add(new JsMinify()); BundleTable.Bundles.Add(commonBundle);
如果我删除了jquery-ui-timepicker-addon.js文件,然后将其单独包含在我的网页中,那么它可以正常工作. (否则我得到Uncaught TypeError:undefined不是函数错误).
我想知道我是否能以某种方式设置我的捆绑代码以跳过缩小这个文件(但仍然包含在捆绑包中)?我一直在环顾四周,但没有提出任何解决方案.
解决方法
所以问题是所有文件都捆绑在一起,然后最小化整个包.因此,您不会轻易地跳过一个文件的缩小.执行此操作的最佳方法可能是创建一个新的Transform,它会附加您想要无限制的此文件的内容.然后你将这个Transform附加到你注册的ScriptBundle:
commonBundle.Transforms.Add(new AppendFileTransform(""~/Scripts/jquery-ui/jquery-ui-timepicker-addon.js""));
AppendFileTransform只是将文件的内容附加到捆绑的响应中.您将不再明确地在包中包含timepicker,但是此变换将包含它,这将有效地为您提供您正在寻找的行为,因为JsMinify转换将首先运行并缩小包,然后您将添加你最终想要的文件是未经证实的.