Estoy probando la función MVC4 System.Web.Optimization 1.0 ScriptBundle .
Tengo la siguiente configuración:
public class BundleConfig
{
public static void RegisterBundles(BundleCollection bundles)
{
// shared scripts
Bundle canvasScripts =
new ScriptBundle(BundlePaths.CanvasScripts)
.Include("~/Scripts/modernizr-*")
.Include("~/Scripts/json2.js")
.Include("~/Scripts/columnizer.js")
.Include("~/Scripts/jquery.ui.message.min.js")
.Include("~/Scripts/Shared/achievements.js")
.Include("~/Scripts/Shared/canvas.js");
bundles.Add(canvasScripts);
}
}
y la siguiente vista:
<script type="text/javascript" src="@Scripts.Url(BundlePaths.CanvasScripts)"></script>
donde BundlePaths.CanvasScripts
esta "~/bundles/scripts/canvas"
. Hace esto:
<script type="text/javascript" src="/bundles/scripts/canvas?v=UTH3XqH0UXWjJzi-gtX03eU183BJNpFNg8anioG14_41"></script>
Hasta ahora todo va bien, excepto que ~/Scripts/Shared/achievements.js
es el primer script en la fuente incluida. Depende de cada script incluido antes en el ScriptBundle
. ¿Cómo puedo asegurarme de que respeta el orden en el que agrego declaraciones de inclusión al paquete?
Actualizar
Esta era una aplicación ASP.NET MVC 4 relativamente nueva, pero hacía referencia al paquete de versión preliminar del marco de optimización. Lo eliminé y agregué el paquete RTM de http://nuget.org/packages/Microsoft.AspNet.Web.Optimization . Con la versión RTM con debug = true en web.config,@Scripts.Render("~/bundles/scripts/canvas")
procesa las etiquetas de script individuales en el orden correcto.
Con debug = false en web.config, la secuencia de comandos combinada tiene la secuencia de comandos logros.js primero, pero como es una definición de función (constructor de objeto) que se llama más tarde, se ejecuta sin errores. ¿Quizás el minificador es lo suficientemente inteligente como para descubrir dependencias?
También probé el IBundleOrderer
implementación que sugirió Darin Dimitrov con RTM con ambas opciones de depuración y se comportó igual.
Entonces, la versión minificada no está en el orden que esperaba, pero funciona.