Como posso especificar uma ordem de inclusão explícita de ScriptBundle?
Estou experimentando oRecurso MVC4 System.Web.Optimization 1.0 ScriptBundle.
Eu tenho a seguinte configuração:
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);
}
}
e a seguinte visão:
<script type="text/javascript" src="@Scripts.Url(BundlePaths.CanvasScripts)"></script>
OndeBundlePaths.CanvasScripts
é"~/bundles/scripts/canvas"
. Isso renderiza isso:
<script type="text/javascript" src="/bundles/scripts/canvas?v=UTH3XqH0UXWjJzi-gtX03eU183BJNpFNg8anioG14_41"></script>
Até aí tudo bem, exceto~/Scripts/Shared/achievements.js
é o primeiro script na fonte agrupada. Depende de cada script incluído antes dele noScriptBundle
. Como posso garantir que ele respeita a ordem na qual adiciono instruções de inclusão ao pacote?
Atualizar
Este era um aplicativo relativamente novo da ASP.NET MVC 4, mas referenciava o pacote de pré-lançamento da estrutura de otimização. Eu removi e adicionei o pacote RTM dehttp://nuget.org/packages/Microsoft.AspNet.Web.Optimization. Com a versão RTM com debug = true no web.config,@Scripts.Render("~/bundles/scripts/canvas")
processa as tags de script individuais na ordem correta.
Com debug = false no web.config, o script combinado tem o script achievements.js primeiro, mas como é uma definição de função (construtor de objeto) chamada posteriormente, ele é executado sem erros. Talvez o minidificador seja inteligente o suficiente para descobrir dependências?
Eu também tentei oIBundleOrderer
implementação que Darin Dimitrov sugeriu com o RTM com as duas opções de depuração e se comportou da mesma forma.
Portanto, a versão minificada não está na ordem esperada, mas funciona.