Я не уверен на 100%, с чем у тебя проблемы. Похоже, вы хотите включить пакеты динамически? Я бы действительно старался избегать использования любого механизма, который динамически захватывает JS, а затем объединяет / объединяет его в любом конкретном порядке.
Рано или поздно вам понадобится точный контроль зернистости того, что JS включено в какой порядок. Чем раньше вы решите эту проблему, тем больше будет ваше приложение в будущем. Расстраивает то, что они даже создали возможность просто связывать все сценарии в папке автоматически, это такая плохая идея.
Таким образом, вы остаетесь с крайне незначительным раздражением необходимости указывать порядок включения для ваших файлов javascript и пакетов. Мы делаем это, поддерживая простой List<string>
, который используется при запуске приложения.
Прямо сейчас я думаю, что для нашего использования мы можем обойтись только одним большим пакетом для сайта, но я мог видеть настройку возможности указать пакеты, а затем указать порядок включения для пакетов. В конце концов вы просто получите 1008 *, чтобы пройти.
Вот как частично выглядит наш скрипт, он позволяет нам динамически переключаться между использованием пакета или использованием отдельно включенных файлов javascript:
@if (NameSpace.UI.UseBundledResources) // set in the web.config, different per environment
{
<script src="@Url.ContentNoCache("~/bundle.js")" type="text/javascript"></script>
}
else
{
foreach (var file in NameSpace.UI.JavaScriptFileNames)
{
<script src="@Url.ContentNoCache(file)" type="text/javascript"></script>
}
}
и наше приложение запускается
var customJsFiles = NameSpace.UI.JavaScriptFileNames;
var myJSBundle = new Bundle("~/bundle.js", typeof(JsMinify));
customJsFiles.ForEach(f => myJSBundle.AddFile(f));
BundleTable.Bundles.Add(myJSBundle);