c# Bundler no incluye archivos .min



4 Answers

Microsoft implica el siguiente comportamiento (y prefiero seguirlo en mis proyectos):

version corta

  1. Tiene las versiones de depuración y minimizadas de un script en su proyecto en la misma carpeta:
    • script.js
    • script.min.js
  2. Solo agrega script.js a un paquete en su código.

Como resultado, automáticamente tendrá el script.js incluido en el modo DEBUG y script.min.js en el modo LIBERAR .

Versión larga

También puedes tener la versión .debug.js . En ese caso, el archivo se incluye en la siguiente prioridad en DEBUG:

  1. script.debug.js
  2. script.js

en LIBERACIÓN:

  1. script.min.js
  2. script.js

Nota

Y, por cierto, la única razón para tener versiones .min de sus scripts en MVC4 es cuando la versión minified no puede procesarse automáticamente. Por ejemplo, el siguiente código no puede ser ofuscado automáticamente:

if (DEBUG) console.log("Debug message");

En todos los demás casos, puede usar solo una versión de depuración de su script.

c# javascript asp.net-mvc-4 bundling-and-minification

Tengo un problema extraño con el agrupador de mvc4 que no incluye los archivos con la extensión .min.js

En mi clase BundleConfig, declaro

public static void RegisterBundles(BundleCollection bundles)
{
    bundles.Add(new ScriptBundle("~/Scripts/jquery")
        .Include("~/Scripts/jquery-1.8.0.js")
        .Include("~/Scripts/jquery.tmpl.min.js"));            
}

En mi opinión, declaro

<html>
    <head>
    @Scripts.Render("~/Scripts/jquery")
    </head><body>test</body>
</html>

Y cuando se rinde, solo se rinde.

<html>
    <head>
         <script src="/Scripts/jquery-1.8.0.js"></script>
    </head>
    <body>test</body>
</html>

Si cambio el nombre de jquery.tmpl.min.js a jquery.tmpl.js (y actualizo la ruta en el paquete correspondiente), ambos scripts se representan correctamente.

¿Hay algún ajuste de configuración que haga que ignore los archivos '.min.js'?




He encontrado una buena solución que funciona al menos en MVC5, puedes usar Bundle lugar de ScriptBundle . No tiene el comportamiento inteligente de ScriptBundle que no nos gusta (ignorando .min, etc.) en este caso. En mi solución, uso Bundle for 3d party scripts con archivos ScriptBundle y .map, y uso ScriptBundle para nuestro código. No he notado ninguna desventaja de hacerlo. Para que funcione de esta manera, deberá agregar el archivo original, por ejemplo, angular.js, y cargará angular.js en la depuración y agrupará el angular.min.js en el modo de lanzamiento.




En mi caso, estaba usando la biblioteca Knockout.js (¡maravillosa!) Que viene como versiones Debug / Non:

"~/Scripts/knockout-{Version}.js"
"~/Scripts/knockout-{Version}.Debug.js"

Para hacer que esto funcione, incluí "Knockout- {Version} .js" (no depuración) en mi paquete y obtuve el .debug. js archivo en modo de depuración.




Bundler tiene muchos beneficios revisa esta página PERO :

La plataforma de Microsoft MVC4 considera que tiene al menos una versión minificada y una versión no minada para cada Script o Style Bundle (también están disponibles otros archivos como Debug y vsdoc). Así que tenemos problemas en situaciones en que solo hay uno de estos archivos.

Puede cambiar el estado de depuración en el archivo web.config de forma permanente para manejar la salida:

<compilation debug="false" targetFramework="4.0" />

Ver los cambios de salida! Filtrado de archivos cambiado. Para cumplir con el propósito, debemos cambiar ignorar la filtración de casos que cambiará la lógica de la aplicación.




Related