Внешняя загрузка комплекта MVC JS
У меня есть небольшая библиотека JS в моем проекте MVC 5, и я хочу, чтобы внешние пользователи могли загружать их в свои приложения. На данный момент я связываю это так:
bundles.Add(new ScriptBundle("~/clientApi")
.IncludeDirectory("~/Api/clientapps/", "*.js"));
Затем я могу получить доступ к связанной библиотеке через браузер по пути /clientApi
,
Тем не менее, он всегда минимизирован, хотя я установил свой web.config debug=true, а другие пакеты в моем собственном приложении включены как неминифицированные.
Как я могу сделать файл (и) в пакете доступным как не минимизированный файл комплекта?
2 ответа
Если вы получаете доступ /clientApi
непосредственно тогда да это будет связанная / уменьшенная версия.
debug=true
опция влияет на ваш сценарий ссылки в вашем собственном .cshtml
файл. когда debug=true
ссылки на отдельные файлы сценариев отображаются клиенту (поэтому клиент не использует /clientApi
совсем).
когда debug=false
тогда ссылка на /clientApi
(со строкой запроса версии) вместо этого отображается клиенту, поэтому он получает пакетную / минимизированную версию... Если вы дадите эту ссылку этим внешним пользователям, то именно это и будет отображаться.
Этому пути не важно, отлажен он или нет. Это не как /clientApi
собирается связывать, но не сокращать файлы в зависимости от ваших настроек компиляции... это просто или ваше приложение будет отображать объединенный / свернутый путь или отдельные пути скрипта.
Если вы хотите выполнить отладку / тестирование во внешних приложениях, им просто нужно будет использовать отдельные пути скриптов.
Даже если вы дадите этим внешним приложениям /clientApi
Ссылка, как только тестирование закончено, и они готовы использовать пакетную / минимизированную версию, это не объясняет, как вы собираетесь управлять версиями. Если вы обновите скрипт, как они узнают, что нужно остановить кэширование?
На самом деле вы можете обслуживать пакет без объединения, если отключите преобразования пакетов.
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());
}
}