В недавнем проекте, над которым я работал на C# / ASP.NET, у меня есть несколько довольно сложных файлов JavaScript и несколько отличных таблиц стилей. Поскольку эти ресурсы сценария увеличиваются в размере, он желательно минимизировать ресурсы и, конечно же, сохраняет ваши веб-страницы как можно более легкими. Я знаю многих разработчиков, которые вручную загружают свои ресурсы JavaScript в компрессоры после отладки, а затем развертывают свои приложения.
Когда дело доходит до контроля версий и автоматизированных сборок в удовлетворительном мире непрерывной интеграции (спасибо CruiseControl.NET); ручное сжатие просто не годится. Единственный способ сохранить контроль версий и предложить сжатые ресурсы - это сохранить исходный код JS / CSS и их миниатюрные собратья в отдельной структуре каталогов. Затем зарегистрируйте только один набор ресурсов или другой в коде программной части. Однако, если разработчик вносит изменения в исходный код JS / CSS, а затем не может повторно сжать его и проверить обе версии, то ваша строка кода теперь не синхронизирована. Не говоря уже об неэлегантности.
Я думаю, что было бы неплохо написать собственный исполняемый файл (если он еще не существует) для блока задач CC.NET, который будет находить и сжимать все ресурсы JavaScript и CSS в целевом каталоге после действия сборки, но до asp .net опубликовать в целевой. Таким образом, разработчики будут работать только с исходным кодом JS и CSS, а пользователи получат только минимизированные ресурсы.
Есть ли приложение, которое уже выполняет эту задачу, и если нет, то какие ресурсы мне следует установить на сервере сборки, чтобы запустить CC.NET?
(ближайший вопрос, который я мог найти здесь, требует NAnt, в моем случае это не вариант.)
Обновлено: У Дэйва Уорда теперь есть отличная статья о как автоматически минимизировать в Visual Studio на его сайте.
Нет. Я имел в виду minify (en.wikipedia.org/wiki/Minify), но я думаю, что это 12 из одного или дюжина другого. Я считаю, что эти два термина взаимозаменяемы.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Проект MSBuildCommunityTasks имеет несколько задач MSBuild, которые могут выполнять то, что вы ищете, включая Merge и JSCompress.
Вы можете добавить их в свой проект MSBuild в целевом объекте AfterBuild, чтобы проект мог выполнять это действие каждый раз при построении проекта, и ничто не могло рассинхронизироваться. После этого ваше веб-приложение может ссылаться на сжатую версию для запуска, но разработчики будут редактировать полные версии.
На сервере ничего больше не потребуется, кроме сборки задач сообщества MSBuild. Вы можете поместить эту сборку в свое собственное дерево исходного кода и ссылаться оттуда, и ваша сборка CI должна получить эту сборку и все, что ей нужно при сборке.
Хех, удивительно, что я собираюсь поместить это в StackOverflow сегодня вечером, и поиск в Google обнаружил наш сайт! ПУТЬ, ТАК! И хороший ответ, Тодд +1
Я должен добавить, что проект сообщества msbuild tasks - звездный. Я использую jscompress в наших процессах сборки. Обратите внимание, что вы не должны подвергать сжатию файл jquery.min, так как он будет подавлен.
К вашему сведению: проект MSBuildTasks перемещен на GitHub: github.com/loresoft/msbuildtasks
Еще одна библиотека сжатия JS (и CSS!) Для MSBuild:
http://www.codeplex.com/YUICompressor
Это порт .NET для Yahoo! компрессор на основе Java.
Хорошая находка, Джаррод. Я собираюсь рассмотреть автоматический минификатор CSS, который также можно будет включить в автоматические сборки. Это была хорошая находка.
Джаррод, можете ли вы еще раз взглянуть на порт .NET YUICompressor (ссылка выше). Вчера выпал новый релиз. В прошлый раз вы, ребята, сказали в подкасте SO, у вас были проблемы с этим. Хотелось бы увидеть, работает ли эта сборка с вашим графиком развертывания ... а если нет, напишите, почему / что и т. д. :)
Не лучший ответ, но если вы используете MVC4, они встроили это как новую функцию. При запуске конфигурации отладки он выводит отдельные файлы с комментариями и т. д., Но когда вы переключаетесь на выпуск, он автоматически объединяет, минимизирует и изменяет ссылки страниц на минимизированные файлы. Вы можете настроить отдельные пакеты, скажем, для jquery и ваших собственных js. Это работает с файлами CSS и JS.
http://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minification
Если MVC4 вам не подходит, вы также можете найти в Nuget пакеты, которые могут помочь, например:
https://www.nuget.org/packages?q=minify
Да, сейчас вариантов больше, чем когда этот вопрос был опубликован в 2008 году.
под minify, я думаю, вы имеете в виду минимизировать ...