ASP.NET Bundles cómo desactivar la minificación



Answers

Las directivas de compilación condicional son su amigo:

#if DEBUG
            var jsBundle = new Bundle("~/Scripts/js");
#else
            var jsBundle = new ScriptBundle("~/Scripts/js");
#endif
Question

Tengo debug="true" en mi web.config (s) , y simplemente no quiero que mis paquetes sean minimizados, pero nada de lo que hago parece deshabilitarlo. He intentado con enableoptimisations=false , aquí está mi código:

//Javascript
bundles.Add(new ScriptBundle("~/bundles/MainJS")
            .Include("~/Scripts/regular/lib/mvc/jquery.validate.unobtrusive.js*")
            .Include("~/Scripts/regular/lib/mvc/jquery.validate*")
            .Include("~/Scripts/regular/lib/bootstrap.js")
            .IncludeDirectory("~/Scripts/regular/modules", "*.js", true)
            .IncludeDirectory("~/Scripts/regular/pages", "*.js", true)
            .IncludeDirectory("~/Scripts/regular/misc", "*.js", true));

//CSS
bundles.Add(new StyleBundle("~/bundles/MainCSS")
            .Include("~/Content/css/regular/lib/bootstrap.css*")
            .IncludeDirectory("~/Content/css/regular/modules", "*.css", true)
            .IncludeDirectory("~/Content/css/regular/pages", "*.css", true))



Combiné algunas respuestas dadas por otros en esta pregunta para encontrar otra solución alternativa.

Objetivo: agrupar siempre los archivos, deshabilitar la minificación de JS y CSS en el caso de que <compilation debug="true" ... /> y aplicar siempre una transformación personalizada al paquete de CSS.

Mi solución :

1) En web.config : <compilation debug="true" ... />

2) En el método Global.asax Application_Start () :

 protected void Application_Start() {
     ...
     BundleTable.EnableOptimizations = true; // Force bundling to occur

     // If the compilation node in web.config indicates debugging mode is enabled
     // then clear all transforms. I.e. disable Js and CSS minification.
     if (HttpContext.Current.IsDebuggingEnabled) {
         BundleTable.Bundles.ToList().ForEach(b => b.Transforms.Clear());
     }

      // Add a custom CSS bundle transformer. In my case the transformer replaces a
      // token in the CSS file with an AppConfig value representing the website URL
      // in the current environment. E.g. www.mydevwebsite in Dev and
      // www.myprodwebsite.com in Production.
      BundleTable.Bundles.ToList()
          .FindAll(x => x.GetType() == typeof(StyleBundle))
          .ForEach(b => b.Transforms.Add(new MyStyleBundleTransformer()));
     ...
}



Combina varias respuestas, esto funciona para mí en ASP.NET MVC 4.

        bundles.Add(new ScriptBundle("~/Scripts/Common/js")
            .Include("~/Scripts/jquery-1.8.3.js")
            .Include("~/Scripts/zizhujy.com.js")
            .Include("~/Scripts/Globalize.js")
            .Include("~/Scripts/common.js")
            .Include("~/Scripts/requireLite/requireLite.js"));

        bundles.Add(new StyleBundle("~/Content/appLayoutStyles")
            .Include("~/Content/AppLayout.css"));

        bundles.Add(new StyleBundle("~/Content/css/App/FunGrapherStyles")
            .Include("~/Content/css/Apps/FunGrapher.css")
            .Include("~/Content/css/tables.css"));

#if DEBUG
        foreach (var bundle in BundleTable.Bundles)
        {
            bundle.Transforms.Clear();
        }
#endif



Busque la palabra clave EnableOptimizations en su proyecto

Entonces si encuentras

BundleTable.EnableOptimizations = true;

convertirlo en false .




Puedes desactivar la minificación en tus paquetes simplemente borrando tus transformaciones.

var scriptBundle = new ScriptBundle("~/bundles/scriptBundle");
...
scriptBundle.Transforms.Clear();

Personalmente, me pareció útil cuando quería agrupar todos mis scripts en un solo archivo, pero necesitaba legibilidad durante las fases de depuración.




Si establece la siguiente propiedad en falso, deshabilitará tanto la agrupación como la minificación.

En Global.asax.cs

protected void Application_Start()
{
    System.Web.Optimization.BundleTable.EnableOptimizations = false;
}



Esto puede ser útil para alguien en el futuro ya que el nuevo marco, cuando se configura a través de VS, obtiene un predeterminado web.config , web.Debug.config y web.Release.config . En la web.release.config encontrarás esta línea:

<compilation xdt:Transform="RemoveAttributes(debug)" />

esto parecía anular cualquier cambio en línea que hice. Comenté esta línea y fuimos gravy (en términos de ver código no minificado en una compilación de "lanzamiento")




Related