Подтвердить что ты не робот

Script Минимизация и непрерывная интеграция с MSBuild

В недавнем проекте, над которым я работал в С#/ASP.NET, у меня есть довольно сложные файлы JavaScript и некоторые стильные таблицы стилей. Поскольку эти ресурсы script растут в размерах, это целесообразно минимизировать ресурсы и, конечно, держать ваши веб-страницы как можно более легкими. Я знаю многих разработчиков, которые передают свои ресурсы JavaScript в компрессоры после отладки, а затем развертывают свои приложения.

Когда дело доходит до контроля источника и автоматических сборок в удовлетворяющем мире непрерывной интеграции (спасибо CruiseControl.NET); сжатие рук просто не будет выполнено. Единственный способ сохранить исходный контроль и предоставить сжатые ресурсы - сохранить источник JS/CSS и их свернутых собратьев в отдельной структуре каталогов. Затем регистрируйте только один набор ресурсов или другой код. Однако, если разработчик вносит изменения в источник JS/CSS, а затем не может повторно скомпилировать его и проверить в обеих версиях, тогда строка кода youre теперь не синхронизирована. Не говоря уже о неэлегантном.

Я думаю, что было бы неплохо написать собственный исполняемый файл (если он еще не существует) для блока задач CC.NET, который мог бы найти и сжать все ресурсы JavaScript и CSS в целевом каталоге после действия сборки, но перед публикацией asp.net. Таким образом, разработчики будут работать только с источником JS и CSS, и пользователи получат только мини-ресурсы.

Есть ли приложение, которое уже выполняет эту задачу, а если нет, то какой ресурс я должен искать для установки на сервере сборки, чтобы выполнить CC.NET?

(ближайший вопрос Я мог бы найти здесь, для этого требуется NAnt, что в моем случае не является вариантом.)

EDIT: У Дейва Уорда теперь есть хорошая статья о как автоматически минимизировать в Visual Studio на его сайте.

4b9b3361

Ответ 1

Проект MSBuildCommunityTasks содержит несколько задач MSBuild, которые могут выполнять то, что вы ищете, включая Merge и JSCompress.

Вы можете добавить их в свой проект MSBuild в целевой среде AfterBuild, чтобы проект мог выполнять это действие каждый раз, когда проект был построен, и ничто никогда не выйдет из строя. Затем ваше веб-приложение может ссылаться на сжатую версию для запуска, но разработчики будут редактировать полные версии.

На сервере не потребуется ничего другого, кроме сборки задач сообщества MSBuild. Вы можете поместить эту сборку в свое собственное исходное дерево и ссылку оттуда, и ваша сборка CI должна получить эту сборку и все, что ей нужно, когда она будет построена.

Ответ 3

Не идеальный ответ, но если вы используете MVC4, они создали это как новую функцию. При запуске конфигурации Debug он выводит отдельные файлы с комментариями и т.д., Но когда вы переключаетесь на Release, он автоматически связывает, уменьшает и изменяет ссылки на страницы с минитипированными файлами. Вы можете настроить отдельные пакеты, например jQuery и собственные js. Это работает с CSS и JS файлами.

http://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minification

Если MVC4 не работает для вас, вы также можете найти пакеты в Nuget, которые могут помочь в этом:

https://www.nuget.org/packages?q=minify