Sử dụng Grunt, Bower, Gulp, NPM với Visual Studio 2015 cho Dự án ASP.NET 4.5


90

Visual Studio 2015 được tích hợp sẵn hỗ trợ cho các công cụ như Grunt, Bower, Gulp và NPM cho các dự án ASP.NET 5.

Tuy nhiên, khi tôi tạo một dự án ASP.NET 4.5.2 bằng Visual Studio 2015, nó không sử dụng các công cụ này. Tôi muốn sử dụng bower thay vì nuget để quản lý các gói phía máy khách.

Tôi có thể tìm thông tin về cách sử dụng các công cụ này với Visual Studio 2013 (xem câu hỏi này chẳng hạn). Nhưng tôi đoán quy trình này khác với Visual Studio 2015 vì nó được tích hợp sẵn hỗ trợ cho các công cụ này.

Câu trả lời:


128

Mặc dù câu trả lời của Liviu Costea là đúng, nhưng tôi vẫn mất một khoảng thời gian để tìm ra cách nó thực sự được thực hiện. Vì vậy, đây là hướng dẫn từng bước của tôi bắt đầu từ một dự án ASP.NET 4.5.2 MVC mới. Hướng dẫn này bao gồm quản lý gói phía máy khách bằng cách sử dụng bower nhưng chưa (chưa) bao gồm việc đóng gói / grunt / gulp.

Bước 1 (Tạo dự án)

Tạo một dự án ASP.NET 4.5.2 mới (Mẫu MVC) với Visual Studio 2015.

Bước 2 (Xóa Gói / Tối ưu hóa khỏi Dự án)

Bước 2.1

Gỡ cài đặt các Gói Nuget sau:

  • bootstrap
  • Microsoft.jQuery.Unobstrusive.Validation
  • jQuery.Validation
  • jQuery
  • Microsoft.AspNet.Web.Optimization
  • WebGrease
  • Antlr
  • Modernizr
  • Trả lời

Bước 2.2

Xóa App_Start\BundleConfig.cskhỏi dự án.

Bước 2.3

Tẩy

using System.Web.Optimization;

BundleConfig.RegisterBundles(BundleTable.Bundles);

từ Global.asax.cs

Bước 2.4

Tẩy

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

từ Views\Web.config

Bước 2.5

Loại bỏ các ràng buộc lắp ráp cho System.Web.OptimizationWebGreasekhỏiWeb.config

Bước 3 (Thêm bower vào dự án)

Bước 3.1

Thêm package.jsontệp mới vào dự án ( NPM configuration filemẫu mục)

Bước 3.2

Thêm bowervào devDependencies:

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

Gói bower được tự động cài đặt khi package.jsonđược lưu.

Bước 4 (Định cấu hình bower)

Bước 4.1

Thêm bower.jsontệp mới vào dự án ( Bower Configuration filemẫu mục)

Bước 4.2

Thêm bootstrap, jquery-validation-unobtrusive, modernizrrespondđể phụ thuộc:

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

Các gói này và các gói phụ thuộc của chúng được tự động cài đặt khi bower.jsonđược lưu.

Bước 5 (Sửa đổi Views\Shared\_Layout.cshtml)

Bước 5.1

Thay thế

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

với

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

Bước 5.2

Thay thế

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

với

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

Bước 5.3

Thay thế

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

với

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

Bước 5.4

Thay thế

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

với

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

Bước 6 (Sửa đổi các nguồn khác)

Trong tất cả các Chế độ xem khác thay thế

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

với

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

Liên kết hữu ích


Bó & Thu nhỏ

Trong phần nhận xét bên dưới, LavaHot đề xuất phần mở rộng Bundler & Minifier để thay thế cho gói mở rộng mặc định mà tôi đã xóa ở bước 2. Anh ấy cũng đề xuất bài viết này về cách đóng gói với Gulp.


6
Cảm ơn rât nhiều. Tôi nói đúng là còn thiếu một bước: cách ánh xạ ~ / wwwroot tới /../bower_components (hoặc gulp / grunt cấu hình cách di chuyển các gói bower đến "~ / wwwroot"). Bạn có thể thêm bước này và mô tả cách bạn thực hiện không đề nghị sắp xếp mã js / css để chạy với IIS Express trong môi trường VS2015?
Roman Pokrovskij,

Khi bạn tạo một bower.jsontập tin thông qua Visual Studio 2015, nó sẽ tự động tạo ra một bowerrctập tin là tốt, mà sẽ ghi đè vị trí mặc định cho cài đặt Chòi chơi từ bower_componentsđếnwwwroot/lib
Sagebrush GIS

1
Vì vậy, hóa ra việc đóng gói khá hữu ích đối với tôi. Bây giờ bạn đã xóa gói mặc định, tôi muốn giới thiệu Bundler & Minifier để thay thế nó. Nó sử dụng Task Runner Explorer và có tệp cấu hình tương tự như npm và bower. Nó cũng là một phần của Web Essentials, vì vậy bạn có thể đã cài đặt nó.
LavaHot

1
Đây là một bài viết hay về chủ đề này.
LavaHot

1
Cảm ơn vì thông tin được tiết lộ @SagebrushGIS! Tôi cũng đang tìm hiểu về cách thêm quản lý gói Bower vào dự án MVC của mình. Tôi đã thêm bower.json qua VS2015, nhưng tôi không thấy tệp bowerrc mà bạn đang nói đến. Tôi có thể thiếu bất kỳ bước nào hoặc tôi nên tìm tệp này ở đâu? Là một công trình xung quanh cho bây giờ, tôi sử dụng: <link rel = "stylesheet" href = "~ / bower_components / bootstrap / dist / css / bootstrap.min.css" />
Guido Kersten

4

Nó thực sự không quá khác biệt. Chỉ là có hỗ trợ tốt hơn cho tất cả những thứ này bên trong Visual Studio, chẳng hạn như khi bạn thêm các mục mới, bạn có mẫu cho tệp cấu hình bower hoặc npm. Ngoài ra, bạn có các mẫu cho các tệp cấu hình gulp hoặc grunt.
Nhưng việc thực sự gọi các tác vụ grunt / gulp và ràng buộc chúng để xây dựng các sự kiện vẫn được thực hiện với Task Runner Explorer, giống như trong VS 2013.


Tôi đoán tôi vẫn không thấy cách bạn cài đặt các gói npm trong VS bằng công cụ được cài đặt. Mỗi lần tôi cố gắng một .npm cài đặt nó nói dự án của tôi không phải là thiết lập cho nút hoặc bất cứ điều gì
Mastro

bạn cần phải tạo package.json trước trong thư mục gốc. Tôi thường tạo nó trong thư mục gốc của dự án mục tiêu dưới dạng anh chị em của tệp csproj. sau đó, bạn có thể sử dụng các lệnh npm
Roman
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.