Все матерые веб-разработчики пишущие на JavaScript уже перешли на использование пакетных менеджеров, свойственных для инфраструктуры JavaScript. Платформа .NET заимела сначала свой менеджер пакетов NuGet. Теперь же в Microsoft решили присоединиться к мировому мейнстриму.
Когда обычный дотнетчик начнет изучать ASP.NET MVC 6, одним из его вопросов будет: "что такое Bower и как с ним работать?" Эта статья покажет основы использования этого нового инструмента, покажет, как работать с Bower и Gulp в среде Visual Studio.
Для примера будет использоваться пакет
Font Awesome.
Что такое Bower?
Bower - это пакетный менеджер для клиентского JavaScript, он исполняется с помощью node.js.
В текущей версии ASP.NET (>4.6) фирма Microsoft проводит дополнительную работу, чтобы создать Nuget-пакеты из последних версий Bower-пакетов. В дальнейшем же планируется оставить NuGet только для бэк-энда.
Как добавить пакеты Bower в проект ASP.NET MVC 6?
Перед добавлением пакета нужно выяснить его правильный идентификатор, например
Font Awesome в Bower называется 'components-font-awesome'. Найти пакеты можно используя поисковую страницу
http://bower.io/search/.
После того, как у Вас есть имя, откройте в корне проекта bower.json и просто добавьте пакет к списку зависимостей. Если Вы работаете через Visual Studio, IntelliSense поможет выбрать пакет и нужную версию.
Вот так выглядит дефолтный bower.json после добавления
Font Awesome:
Здесь мы видим подсказку, которая позволяет нам выбрать конкретную версию, либо последний мажорный релиз (может меняться API), либо последний минорный (предоставляет багфиксы). То есть, значение "4.3.0" навсегда таким и останется. При выборе варианта с крышечкой "^4.3.0" всегда будет закачиваться новейшая версия пакета. А при варианте с волнистой линией "~4.3.0", будут браться последние версии за исключением тех, что будут больше или равны версии "5.0.0".
После того, как Вы сохраните файл bower.json, Вы увидите в окне Output, что пакет автоматически добавлен в солюшен. Однако, нужно еще несколько шагов, чтобы использовать этот пакет.
Использование Gulp для добавления пакета в wwwroot
Новая папка wwwroot предназначена для статических ресурсов, таких как CSS, JS, шрифты и изображения. Эта папка копируется на веб-сервер "как есть", идея была помочь разделить фронт-энд от бэк-энда.
Итак, для добавления пакета в сборку, нужно добавить его в массив bower. Здесь можно использовать звёздочку и расширения файлов для указания, какие из них нужно собирать. После добавления пакета, код будет выглядеть так:
Но и это еще не всё... Также, нужно установить настройки запуска Gulp.
Управлением запуском Gulp
По умолчанию, Gulp не выполняется автоматически, это значит, что Ваши пакеты Bower сами по себе не попадут автоматически в папку wwwroot. Нам нужно настроить запуск Gulp при каждой сборке проекта. Для этого служит интерфейс Task Runner Explorer, доступный при нажатии правой кнопки мыши на файл gulpfile.js.
Так как мы хотим управлять задачей 'copy', нужно нажать на нее правой кнопкой и установить привязку (Bindings) для пункта 'after build'. Теперь, скомпилировав, мы увидим в папке lib внутри wwwroot файлы пакета Font Awesome.
И вот теперь уже можно прописать на странице сайта нужные ссылки, например, на файл css:
<link href="~/lib/components-font-awesome/css/font-awesome.css" rel="stylesheet" />
Итоги
Давайте быть честными, этот процесс был трудным. Это намного сложнее чем использовать NuGet-пакеты. Однако, мировая общественность веб-разработчиков использует такой путь и в долгосрочном плане лучше идти с ними в ногу.
И, кстати, теперь у Вас больше контроля над тем, где что и как развертывается.