Проблема в использовании новой беты в том, что в текущей версии Visual Studio 2015 по умолчанию проект на ASP.NET 5 создается с пакетами предыдущей беты.
Неужели выпили — и все!? Ну… И да, и нет. Из самого браузера — выпили, из ОС нет — теперь эти параметры настраиваются в All Settings -> Network&Internet -> Proxy, что в принципе верно, просто больше непривычно… Windows 10 — эпоха перемен грядет!
Насколько я вижу минимизация html чаще всего заключается в удалении пробелов и перносов строки, это же не много. + html шаблоны весят не так много как js и css(по моему личному опыту).
В bundletransfromer не планируется добавить аналогичную фичу(html bundle, с возможностью сжатия)?
Мне кажется, что реализация HTML-бандлов очень специфична для конкретного проекта и зависит от используемого MV*-фреймворка. Реализация HTML-бандлов в Web Essentials 2013 слишком простая и ей не хватает генерации именованных контейнеров.
По поводу написания модуля для Bundle Transformer пока не могу ничего сказать, потому что не вижу необходимости в использовании инфраструктуры Bundle Transformer для реализации данного функционала. Скорее всего, это будет отдельное расширение под Microsoft ASP.NET Web Optimization Framework, которое будет выпущено как модуль для WebMarkupMin. В качестве основы можно взять код из 5-й главы обучающего курса Трэвиса Госселина «ASP.NET Bundling, Minification & Resource Optimization».
1) Source map мог бы быть доступен через VirtualPath, аналогично тому как вы это сделали
Bundle Transformer производит только трансформации (классы StyleTransformer и ScriptTransformer – это просто реализации интерфейса System.Web.Optimization.IBundleTransform), всю остальную работу, за исключением отладочных HTTP-хэндлеров, делает System.Web.Optimization (он же Microsoft ASP.NET Web Optimization Framework).
2) less/sass возможно, но что такого происходит с typescript, что сломает source map?
В документирующих тегах <reference> также производится преобразование относительных путей в абсолютные:
Если бы все было настолько легко и просто, то поддержка генерации .map-файлов уже давно появилась бы в аналогичных продуктах (например, Cassette и SquishIt).
Некорректно сравнивать Microsoft ASP.NET Web Optimization Framework + Bundle Transformer с Grunt/Gulp, т.к. это совершенно разные классы инструментов. Сравнение с Sprockets было бы логичным.
Скорее всего, поддержки .map-файлов не будет. Перечислю основные проблемы:
Bundle Transformer ничего не записывает в файловую систему, потому что является расширением для System.Web.Optimization. Уже были попытки добавить в System.Web.Optimization генерацию встроенных source map`ов (например, проект AspNetBundling), но они оказались неудачными.
Перед трансляцией LESS-, Sass- и TypeScript-файлов Bundle Transformer производит их предварительную обработку (например, преобразует относительные пути в абсолютные), а такая обработка ломает любые source map`ы. Добавьте еще к этому наличие возможности добавлять пользовательские постпроцессоры и трансформации элементов.
Bundling and Minification (он же Microsoft ASP.NET Web Optimization Framework) работает только на уровне ASP.NET. Рекомендую вам посмотреть инструменты, создающие бандлы на этапе сборки проекта (например, Web Essentials или Task Runner Explorer).
1. На каждый лэйаут — 1 бандл.
2. Бандлы подключаются только на лэйаутах.
3. Вводим понятие групп, которое будет являться просто массивом строк.
Нужно понимать, что при первоначальной обработке каждого бандла (например, минимизации) расходуются ресурсы процессора и память. Кроме того, код обработанных бандлов кэшируется в памяти веб-сервера. Таким образом, при использовании вашего подхода возникает лишняя нагрузка на сервер.
Классические подходы позволяют более эффективно использовать серверный и браузерный кэш. Если они не подходят вам, то используйте RequireJS.
Можно сгенерировать новый сайт с помощью Yeoman generator for ASP.NET vNext projects, а потом перенести на него свой функционал.
Может «выпилили»?
Уже известна дата выхода Visual Studio 2015 RTM?
Для HTML-кода используется большое количество оптимизаций, и все они описаны в самой первой статье «WebMarkupMin HTML Minifier – современный HTML-минимизатор для платформы .NET».
WebMarkupMin не ограничивается только удалением пробельных символов. Используются и другие оптимизации, которые описаны в самой первой статье «WebMarkupMin HTML Minifier – современный HTML-минимизатор для платформы .NET».
Эффективность минимизации HTML-кода не такая высокая, как при минимизации JavaScript и CSS, но, тем не менее, она ощутима. Рекомендую вам прочитать последние статьи Кристенсена «Effect of tabs vs. spaces in HTML files» и «Effects of GZipping vs. minifying HTML files». Чтобы проверить эффективность WebMarkupMin вы можете даже не устанавливать его, а просто протестировать на сайте WebMarkupMin Online.
Мне кажется, что реализация HTML-бандлов очень специфична для конкретного проекта и зависит от используемого MV*-фреймворка. Реализация HTML-бандлов в Web Essentials 2013 слишком простая и ей не хватает генерации именованных контейнеров.
По поводу написания модуля для Bundle Transformer пока не могу ничего сказать, потому что не вижу необходимости в использовании инфраструктуры Bundle Transformer для реализации данного функционала. Скорее всего, это будет отдельное расширение под Microsoft ASP.NET Web Optimization Framework, которое будет выпущено как модуль для WebMarkupMin. В качестве основы можно взять код из 5-й главы обучающего курса Трэвиса Госселина «ASP.NET Bundling, Minification & Resource Optimization».
<div id="ИМЯ_ФАЙЛА_БЕЗ_РАСШИРЕНИЯ" style="display: none;">…</div>
или
<script type="ТИП_СОДЕРЖИМОГО" id="ИМЯ_ФАЙЛА_БЕЗ_РАСШИРЕНИЯ">…</script>
, где
ТИП_СОДЕРЖИМОГО
зависит от конкретного фреймворка (например,text/html
для KnockoutJS илиtext/ng-template
для AngularJS).Bundle Transformer производит только трансформации (классы
StyleTransformer
иScriptTransformer
– это просто реализации интерфейсаSystem.Web.Optimization.IBundleTransform
), всю остальную работу, за исключением отладочных HTTP-хэндлеров, делает System.Web.Optimization (он же Microsoft ASP.NET Web Optimization Framework).В документирующих тегах
<reference>
также производится преобразование относительных путей в абсолютные:Если бы все было настолько легко и просто, то поддержка генерации
.map
-файлов уже давно появилась бы в аналогичных продуктах (например, Cassette и SquishIt).Лучше сравните с ними Web Essentials и Chirpy.
.map
-файлов не будет. Перечислю основные проблемы:Нужно понимать, что при первоначальной обработке каждого бандла (например, минимизации) расходуются ресурсы процессора и память. Кроме того, код обработанных бандлов кэшируется в памяти веб-сервера. Таким образом, при использовании вашего подхода возникает лишняя нагрузка на сервер.
Классические подходы позволяют более эффективно использовать серверный и браузерный кэш. Если они не подходят вам, то используйте RequireJS.