Компрессор YUI и приложения .NET

Я хочу использовать YUI Compressor (оригинал) и использовать его как часть типичных процессов сборки MS (Visual Studio 2008, MSBuild).

Есть ли у кого-нибудь какие-либо рекомендации или мысли по этому поводу? Например, хорошие способы включения в проект, что делать с существующими ссылками на CSS и JS и т.п.

Я рад услышать о преимуществах YUI Compressor.NET и альтернативах, но меня больше интересует использование оригинала.

Спасибо Скотт

Ответ 1

Я использую оба. Компрессор YUI является командной строкой и легко интегрируется в любой процесс сборки. Я без проблем столкнулся с ним.

Вероятно, наиболее распространенным является выполнение сжатия javascript/css при развертывании. Таким образом, вам не нужно обновлять ссылки JS. Но я использую другой метод на своем сайте. У меня есть сжатые файлы, созданные как *-min.js и т.д. Чтобы включить файл script или css на мою страницу, я вызываю серверный метод:

<%= ScriptSrc("~/assets/myscript.js") %>
<%= LinkSrc("~/assets/main.css") %>

Эти методы делают следующее:

  • Разверните путь, связанный с приложением
  • добавить строку версии в конец (для недействительности кэша)
  • выберите между полным script и мини-версией в зависимости от того, находимся ли мы в режиме отладки или нет.

В режиме отладки ScriptSrc может выводить что-то вроде этого:

<script type="text/javascript" src="http://stage.myapp.com/assets/myscript.js?v=1.2" ></script>

но в процессе производства он загрузил уменьшенную версию:

<script type="text/javascript" src="http://stage.myapp.com/assets/myscript-min.js?v=1.2" ></script>

Одно из преимуществ этого заключается в том, что я могу переключаться между полной и уменьшенной версиями, просто изменив web.config, что может помочь отладке.

Ответ 3

Поскольку YUI Compressor - это просто инструмент командной строки, вы можете назвать его частью действия Pre или Post Build. (Если вы достаточно глубоко разбираетесь в MSBuild, вы можете позволить ему запускать только тогда, когда файлы были изменены, ускоряя ваши регулярные сборки, VS довольно мягко, когда речь идет о настроенных действиях MSBuild в файле проекта.)

Вы можете использовать ответ Гейба в качестве руководства по разработке с использованием такой настройки; вы могли бы также во время Render, скажем, на главной странице перевести весь неинфицированный URL-адрес в <head> с мини-адресом (немного сложнее, так как теги <script> будут отображаться в середине Text свойство LiteralControl s).

Ответ 4

Я использовал директивы компилятора для моего script, например, (на главной странице);

  ...
  <% #if RELEASE %>
    <script src="Scripts/combined.min.js" type="text/javascript"></script>
  <% #else %>
    <script src="Scripts/myscript1.js" type="text/javascript"></script>
    <script src="Scripts/myscript2.js" type="text/javascript"></script>
  <% #endif %>
</body>
</html>

Затем в процессе сборки мои различные .js файлы объединяются в один файл conbined.min.js.