Використання Grunt, Bower, Gulp, NPM з Visual Studio 2015 для проекту ASP.NET 4.5


90

Visual Studio 2015 має вбудовану підтримку таких інструментів, як Grunt, Bower, Gulp та NPM для проектів ASP.NET 5.

Однак коли я створюю проект ASP.NET 4.5.2 за допомогою Visual Studio 2015, він не використовує ці інструменти. Я хотів би використовувати bower замість nuget для управління пакунками на стороні клієнта.

Я можу знайти інформацію про використання цих інструментів із Visual Studio 2013 (див., Наприклад, це запитання). Але, думаю, процедура відрізняється для Visual Studio 2015, оскільки вона вбудована в підтримку цих інструментів.

Відповіді:


128

Незважаючи на те, що відповідь Лівіу Костеа є правильною, мені все одно знадобився досить довгий час, щоб зрозуміти, як це робиться насправді. Отже, ось мій покроковий посібник, починаючи з нового проекту ASP.NET 4.5.2 MVC. Цей посібник включає управління пакетами на стороні клієнта за допомогою bower, але (поки що) не охоплює об'єднання / бурчання / ковтання.

Крок 1 (Створення проекту)

Створіть новий проект ASP.NET 4.5.2 (шаблон MVC) за допомогою Visual Studio 2015.

Крок 2 (Видалити зв’язування / оптимізацію з проекту)

Крок 2.1

Видаліть наступні пакети Nuget:

  • завантажувальний ремінь
  • Microsoft.jQuery.Unobstrusive.Validation
  • jQuery.Проверка
  • jQuery
  • Microsoft.AspNet.Web.Optimization
  • WebGrease
  • Antlr
  • Модернізр
  • Відповідь

Крок 2.2

Вилучити App_Start\BundleConfig.csз проекту.

Крок 2.3

Видалити

using System.Web.Optimization;

і

BundleConfig.RegisterBundles(BundleTable.Bundles);

від Global.asax.cs

Крок 2.4

Видалити

<add namespace="System.Web.Optimization"/>

від Views\Web.config

Крок 2.5

Зніміть монтажні прив’язки для System.Web.Optimizationі WebGreaseзWeb.config

Крок 3 (Додайте bower до проекту)

Крок 3.1

Додати новий package.jsonфайл до проекту ( NPM configuration fileшаблон елемента)

Крок 3.2

Додати bowerдо devDependencies:

{
  "version": "1.0.0",
  "name": "ASP.NET",
  "private": true,
  "devDependencies": {
    "bower": "1.4.1"
  }
}

Пакет Bower автоматично встановлюється при package.jsonзбереженні.

Крок 4 (Налаштування bower)

Крок 4.1

Додати новий bower.jsonфайл до проекту ( Bower Configuration fileшаблон елемента)

Крок 4.2

Додати bootstrap, jquery-validation-unobtrusive, modernizrі respondв залежності:

{
  "name": "ASP.NET",
  "private": true,
  "dependencies": {
    "bootstrap": "*",
    "jquery-validation-unobtrusive": "*",
    "modernizr": "*",
    "respond": "*"
  }
}

Ці пакети та їх залежності автоматично встановлюються при bower.jsonзбереженні.

Крок 5 (Змінити Views\Shared\_Layout.cshtml)

Крок 5.1

Замінити

@Styles.Render("~/Content/css")

з

<link rel="stylesheet" href="~/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css" />
<link rel="stylesheet" href="~/Content/Site.css" />

Крок 5.2

Замінити

@Scripts.Render("~/bundles/modernizr")

з

<script src="~/wwwroot/lib/modernizr/modernizr.js" ></script>

Крок 5.3

Замінити

@Scripts.Render("~/bundles/jquery")

з

<script src="~/wwwroot/lib/jquery/dist/jquery.min.js"></script>

Крок 5.4

Замінити

@Scripts.Render("~/bundles/bootstrap")

з

<script src="~/wwwroot/lib/bootstrap/dist/js/bootstrap.min.js"></script>
<script src="~/wwwroot/lib/respond/dest/respond.min.js"></script>

Крок 6 (Змінення інших джерел)

У всіх інших поданнях замінити

@Scripts.Render("~/bundles/jqueryval")

з

<script src="~/wwwroot/lib/jquery-validation/dist/jquery.validate.min.js"></script>
<script src="~/wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"></script>

корисні посилання


Упаковка та мініфікація

У коментарях нижче LavaHot рекомендує розширення Bundler & Minifier як заміну роздільнику за замовчуванням, який я видаляю на кроці 2. Він також рекомендує цю статтю про роз'єднання з Gulp.


6
Дуже тобі дякую. Я маю рацію, що пропустив один крок: як зіставити ~ / wwwroot з /../bower_components (або gulp / grunt config, як перемістити пакети bower в "~ / wwwroot") Не могли б ви додати цей крок і описати, як рекомендуєте організувати код js / css для роботи з IIS Express у середовищі VS2015?
Роман Покровський

Коли ви створюєте bower.jsonфайл через Visual Studio 2015, він також автоматично створює bowerrcфайл, який замінює місце розташування за замовчуванням для встановлення Bower від bower_componentsдоwwwroot/lib
Sagebrush GIS

1
Отож виявляється, зв’язування мені дуже корисно. Тепер, коли ви видалили пакет за замовчуванням, я хотів би рекомендувати Bundler & Minifier замінити його. Він використовує Task Runner Explorer і має конфігураційний файл, подібний до npm і bower. Це також частина Web Essentials, тому, можливо, вона вже встановлена.
LavaHot

1
Ось приємна стаття на тему, як поєднати ковток.
LavaHot

1
Дякуємо за детальну інформацію @SagebrushGIS! Я також досліджую, як додати управління пакетами Bower до мого проекту MVC. Я додав bower.json через VS2015, але я не бачу файл bowerrc, про який ви говорите. Будь-які кроки, яких я міг би пропустити, або де мені знайти цей файл? На сьогоднішній день я використовую: <link rel = "styleheet" href = "~ / bower_components / bootstrap / dist / css / bootstrap.min.css" />
Guido Kersten

4

Насправді це не надто інакше. Просто все це має кращу підтримку всередині Visual Studio, наприклад, коли ви додаєте нові елементи, у вас є шаблони для файлів конфігурації bower або npm. Також у вас є шаблони для файлів конфігурації gulp або grunt.
Але насправді виклик завдань grunt / gulp та прив'язка їх до побудови подій все ще здійснюється за допомогою Task Runner Explorer, як і у VS 2013.


Я думаю, я все ще не бачу, як ви встановлюєте пакунки npm у VS із встановленим інструментом. Кожного разу, коли я намагаюся встановити .npm, він говорить, що мій проект не налаштований на вузол чи що інше
Mastro

вам потрібно спочатку створити package.json у кореневій папці. Зазвичай я створюю це в корені цільового проекту як рідний брат файлу csproj. тоді ви можете використовувати команди npm
Роман
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.