Внешняя загрузка комплекта 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());
    }
}
Другие вопросы по тегам