ASP.Net MVC捆绑和缩小

14

当从开发环境切换到生产环境时,我遇到了一些问题,我的JavaScript文件被压缩的方式存在问题。看起来有些文件无法正确压缩,因此我一直在寻找一种方法来不压缩特定的捆绑包。

    public static void RegisterBundles(BundleCollection _bundles)
    {
        _bundles.Add(new ScriptBundle("~/bundles/toNotMinify").Include(
            "~/Scripts/xxxxxx.js"
            ));

        _bundles.Add(new ScriptBundle("~/bundles/toMinify").Include(
            "~/Scripts/yyyyy.js"
            ));
        etc..

这是我的捆绑配置类中的基本布局。我想找到一种方法,使得我所有的捆绑包都被压缩,除了第一个之外。这可能吗?到目前为止,我找到的唯一解决方案是全局关闭压缩。

2个回答

13

你有几个选项,可以像这个例子一样,用Bundle替换你对ScriptBundle的使用:

_bundles.Add(new Bundle("~/bundles/toNotMinify").Include(
    "~/Scripts/xxxxxx.js"
));

或者您可以像这样在新创建的捆绑包上禁用所有转换:

->

或者您可以这样在新创建的bundle上禁用所有的转换:

var noMinify = new ScriptBundle("~/bundles/toNotMinify").Include(
    "~/Scripts/xxxxxx.js"
);
noMinify.Transforms.Clear();
_bundles.Add(noMinify);

显然第一个解决方案更美观 :)


Rudy 抱歉!我不小心编辑了你的回复而不是我的(我不小心漏掉了一些代码,然后按下“编辑”来更改它。我的错;( - amhed
谢谢。我已经尝试了这两种方法,但在发布模式下构建时仍然会将其缩小。原因不明。 - Thewads
1
Rudis soln 应该可以工作。如果您构建一个基本的 Bundle 而没有指定任何转换,它将简单地捆绑文件,因此这绝对不应该使您的 Bundle 最小化。 - Hao Kung
在使用基本捆绑包(第一个代码片段)时,如何将其输出到视图上? @Bundle.Render("~/bundles/toNotMinify")@Bundles.Render("~/bundles/toNotMinify")@Bundle("~/bundles/toNotMinify") 都无法正常工作。 - Big McLargeHuge
@Koveras 和每个捆绑包一样。@Scripts.Render("~/Bundles/Bundle") - Rudi Visser
显示剩余3条评论

2
您只需要声明一个通用的 Bundle 对象并指定所需的 transforms 即可:
var dontMinify = new Bundle("~/bundles/toNotMinify").Include(
                                        "~/Scripts/xxxxx.js");
            bundles.Add(dontMinify);

            var minify = new Bundle("~/bundles/toNotMinify").Include(
                "~/Scripts/yyyyyy.js");
            minify.Transforms.Add(new JsMinify());
            bundles.Add(minify);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接