Utilizzo di Grunt, Bower, Gulp, NPM con Visual Studio 2015 per un progetto ASP.NET 4.5


90

Visual Studio 2015 include il supporto integrato per strumenti come Grunt, Bower, Gulp e NPM per i progetti ASP.NET 5.

Tuttavia, quando creo un progetto ASP.NET 4.5.2 utilizzando Visual Studio 2015, non utilizza questi strumenti. Vorrei usare bower invece di nuget per gestire i pacchetti lato client.

Posso trovare informazioni sull'utilizzo di questi strumenti con Visual Studio 2013 (vedere questa domanda ad esempio). Ma immagino che la procedura sia diversa per Visual Studio 2015 poiché ha integrato il supporto per questi strumenti.

Risposte:


128

Sebbene la risposta di Liviu Costea sia corretta, mi ci è voluto ancora un po 'di tempo per capire come è effettivamente fatto. Quindi ecco la mia guida passo passo a partire da un nuovo progetto ASP.NET 4.5.2 MVC. Questa guida include la gestione dei pacchetti lato client usando bower ma non copre (ancora) bundling / grunt / gulp.

Passaggio 1 (Crea progetto)

Creare un nuovo progetto ASP.NET 4.5.2 (modello MVC) con Visual Studio 2015.

Passaggio 2 (rimuovere raggruppamento / ottimizzazione dal progetto)

Passaggio 2.1

Disinstallare i seguenti pacchetti Nuget:

  • bootstrap
  • Microsoft.jQuery.Unobstrusive.Validation
  • jQuery.Validation
  • jQuery
  • Microsoft.AspNet.Web.Optimization
  • WebGrease
  • Antlr
  • Modernizr
  • Rispondere

Passaggio 2.2

Rimuovi App_Start\BundleConfig.csdal progetto.

Passaggio 2.3

Rimuovere

using System.Web.Optimization;

e

BundleConfig.RegisterBundles(BundleTable.Bundles);

a partire dal Global.asax.cs

Passaggio 2.4

Rimuovere

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

a partire dal Views\Web.config

Passaggio 2.5

Rimuovere le associazioni di assemblaggio per System.Web.Optimizatione WebGreasedaWeb.config

Passaggio 3 (Aggiungi bower al progetto)

Passaggio 3.1

Aggiungi nuovo package.jsonfile al progetto ( NPM configuration filemodello di elemento)

Passaggio 3.2

Aggiungi bowera devDependencies:

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

Il pacchetto bower viene installato automaticamente quando package.jsonviene salvato.

Passaggio 4 (configurazione pergola)

Passaggio 4.1

Aggiungi nuovo bower.jsonfile al progetto ( Bower Configuration filemodello di elemento)

Passaggio 4.2

Aggiungere bootstrap, jquery-validation-unobtrusive, modernizre respondper le dipendenze:

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

Questi pacchetti e le loro dipendenze vengono installati automaticamente quando bower.jsonvengono salvati.

Passaggio 5 (Modifica Views\Shared\_Layout.cshtml)

Passaggio 5.1

Sostituire

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

con

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

Passaggio 5.2

Sostituire

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

con

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

Passaggio 5.3

Sostituire

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

con

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

Passaggio 5.4

Sostituire

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

con

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

Passaggio 6 (Modifica altre fonti)

In tutte le altre viste sostituire

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

con

<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>

link utili


Raggruppamento e minimizzazione

Nei commenti seguenti LavaHot consiglia l' estensione Bundler & Minifier in sostituzione del bundler predefinito che rimuovo al passaggio 2. Raccomanda anche questo articolo sul bundling con Gulp.


6
Grazie mille. Ho ragione che manca un passaggio: come mappare ~ / wwwroot su /../bower_components (o gulp / grunt config come spostare i pacchetti bower in "~ / wwwroot") Potresti aggiungere questo passaggio e descrivere come lo faresti consiglia di organizzare il codice js / css per l'esecuzione con IIS Express nell'ambiente VS2015?
Roman Pokrovskij

Quando crei un bower.jsonfile tramite Visual Studio 2015, verrà automaticamente creato anche un bowerrcfile, che sostituisce il percorso predefinito per le installazioni di pergola da bower_componentsawwwroot/lib
Sagebrush GIS

1
Quindi risulta che il raggruppamento è abbastanza utile per me. Ora che hai rimosso il bundler predefinito, vorrei consigliare Bundler & Minifier per sostituirlo. Utilizza Task Runner Explorer e ha un file di configurazione simile a npm e bower. Fa anche parte di Web Essentials, quindi potresti già averlo installato.
LavaHot

1
Ecco un bell'articolo sull'argomento da raggruppare con gulp.
LavaHot

1
Grazie per le informazioni dettagliate @SagebrushGIS! Sto anche studiando come aggiungere la gestione dei pacchetti Bower al mio progetto MVC. Ho aggiunto bower.json tramite VS2015, ma non vedo il file bowerrc di cui stai parlando. Qualche passaggio che potrebbe mancare o dove dovrei trovare questo file? Per ovviare al momento, utilizzo: <link rel = "stylesheet" href = "~ / bower_components / bootstrap / dist / css / bootstrap.min.css" />
Guido Kersten

4

In realtà non è troppo diverso. È solo che c'è un supporto migliore per tutti questi in Visual Studio, ad esempio quando aggiungi nuovi elementi hai modelli per file di configurazione bower o npm. Inoltre hai modelli per i file di configurazione gulp o grunt.
Ma la chiamata effettiva di attività grunt / gulp e il loro legame per creare eventi è ancora eseguita con Task Runner Explorer, proprio come in VS 2013.


Immagino di non vedere ancora come installi i pacchetti npm in VS con lo strumento installato. Ogni volta che provo un'installazione .npm dice che il mio progetto non è configurato per node o altro
Mastro

devi prima creare package.json nella cartella principale. Di solito lo creo nella radice del progetto di destinazione come fratello del file csproj. quindi, puoi usare i comandi npm
Roman
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.