Sử dụng LibMan với ASP.NET Core trong Visual Studio
Tác giả: Scott Addie
Visual Studio có hỗ trợ tích hợp sẵn cho LibMan trong các dự án ASP.NET Core, bao gồm:
- Hỗ trợ cấu hình và chạy các thao tác khôi phục (restore) LibMan khi build.
- Các mục menu để kích hoạt các thao tác restore và clean của LibMan.
- Hộp thoại tìm kiếm để tìm thư viện và thêm file vào dự án.
- Hỗ trợ chỉnh sửa
libman.json— file manifest (tệp kê khai) của LibMan.
Điều kiện tiên quyết
- Visual Studio 2019 với workload (khối công việc) ASP.NET and web development
Thêm file thư viện
File thư viện có thể được thêm vào dự án ASP.NET Core theo hai cách:
- Sử dụng hộp thoại Add Client-Side Library
- Cấu hình thủ công các mục trong file manifest LibMan
Sử dụng hộp thoại Add Client-Side Library
Thực hiện các bước sau để cài đặt thư viện phía client (client-side library):
- Trong Solution Explorer, nhấp chuột phải vào thư mục dự án nơi các file sẽ được thêm vào. Chọn Add > Client-Side Library. Hộp thoại Add Client-Side Library xuất hiện.
- Chọn provider thư viện từ dropdown Provider. CDNJS là provider mặc định.
- Nhập tên thư viện cần tải vào ô text Library. IntelliSense cung cấp danh sách các thư viện bắt đầu bằng văn bản đã nhập.
- Chọn thư viện từ danh sách IntelliSense. Lưu ý tên thư viện được nối thêm ký hiệu
@và phiên bản ổn định mới nhất được biết bởi provider đã chọn. - Quyết định file nào sẽ bao gồm:
- Chọn nút radio Include all library files để bao gồm tất cả file của thư viện.
- Chọn nút radio Choose specific files để bao gồm một tập con file của thư viện. Khi nút radio được chọn, cây chọn file được kích hoạt. Đánh dấu các ô bên trái tên file để tải xuống.
- Chỉ định thư mục dự án để lưu trữ file trong ô text Target Location. Khuyến nghị lưu mỗi thư viện trong một thư mục riêng.
Thư mục Target Location được gợi ý dựa trên vị trí khởi chạy hộp thoại:
- Nếu khởi chạy từ thư mục gốc dự án:
- wwwroot/lib được dùng nếu wwwroot tồn tại.
- lib được dùng nếu wwwroot không tồn tại.
- Nếu khởi chạy từ một thư mục dự án, tên thư mục tương ứng được sử dụng.
Gợi ý thư mục có thêm hậu tố là tên thư viện. Bảng sau minh họa các gợi ý thư mục khi cài đặt jQuery trong dự án Razor Pages.
| Vị trí khởi chạy | Thư mục được gợi ý |
|---|---|
| Thư mục gốc dự án (nếu wwwroot tồn tại) | wwwroot/lib/jquery/ |
| Thư mục gốc dự án (nếu wwwroot không tồn tại) | lib/jquery/ |
| Thư mục Pages trong dự án | Pages/jquery/ |
- Nhấp nút Install để tải xuống các file theo cấu hình trong
libman.json. - Xem feed Library Manager của cửa sổ Output để biết chi tiết cài đặt. Ví dụ:
``console Restore operation started... Restoring libraries for project LibManSample Restoring library jquery@3.3.1... (LibManSample) wwwroot/lib/jquery/jquery.min.js written to destination (LibManSample) wwwroot/lib/jquery/jquery.js written to destination (LibManSample) wwwroot/lib/jquery/jquery.min.map written to destination (LibManSample) Restore operation completed 1 libraries restored in 2.32 seconds ``
Cấu hình thủ công các mục trong file manifest LibMan
Tất cả các thao tác LibMan trong Visual Studio đều dựa trên nội dung của file manifest LibMan (libman.json) ở thư mục gốc dự án. Bạn có thể chỉnh sửa thủ công libman.json để cấu hình file thư viện cho dự án. Visual Studio khôi phục tất cả file thư viện khi libman.json được lưu.
Để mở libman.json để chỉnh sửa, có các tùy chọn sau:
- Nhấp đúp vào file
libman.jsontrong Solution Explorer. - Nhấp chuột phải vào dự án trong Solution Explorer và chọn Manage Client-Side Libraries. †
- Chọn Manage Client-Side Libraries từ menu Project của Visual Studio. †
† Nếu file libman.json chưa tồn tại trong thư mục gốc dự án, nó sẽ được tạo với nội dung mẫu mặc định.
Visual Studio cung cấp hỗ trợ chỉnh sửa JSON phong phú như tô màu, định dạng, IntelliSense, và xác thực schema. JSON schema của manifest LibMan có tại https://json.schemastore.org/libman.
Với file manifest sau, LibMan lấy các file theo cấu hình được định nghĩa trong thuộc tính libraries:
- Một tập con của jQuery phiên bản 3.3.1 được lấy từ provider CDNJS. Tập con được định nghĩa trong thuộc tính
files—jquery.min.js,jquery.js, vàjquery.min.map. Các file được đặt trong thư mục wwwroot/lib/jquery của dự án. - Toàn bộ Bootstrap phiên bản 4.1.3 được lấy và đặt trong thư mục wwwroot/lib/bootstrap. Thuộc tính
providercủa object literal ghi đè giá trị thuộc tínhdefaultProvider. LibMan lấy các file Bootstrap từ provider unpkg.
{
"version": "1.0",
"defaultProvider": "cdnjs",
"libraries": [
{
"library": "jquery@3.7.1",
"files": [
"jquery.min.js",
"jquery.js",
"jquery.min.map"
],
"destination": "wwwroot/lib/jquery/"
},
{
"provider": "unpkg",
"library": "bootstrap@5.3.6",
"destination": "wwwroot/lib/bootstrap/"
}
]
}Lưu ý: LibMan chỉ hỗ trợ một phiên bản của mỗi thư viện từ mỗi provider. File libman.json sẽ không qua được xác thực schema nếu chứa hai thư viện có cùng tên thư viện cho một provider nhất định.
Khôi phục file thư viện
Để khôi phục file thư viện từ Visual Studio, phải có file libman.json hợp lệ trong thư mục gốc dự án. Các file được khôi phục sẽ được đặt trong dự án tại vị trí được chỉ định cho mỗi thư viện.
File thư viện có thể được khôi phục trong dự án ASP.NET Core theo hai cách:
- Khôi phục file trong quá trình build
- Khôi phục file thủ công
Khôi phục file trong quá trình build
LibMan có thể khôi phục các file thư viện đã được định nghĩa như một phần của quá trình build. Theo mặc định, hành vi restore-on-build (khôi phục khi build) bị vô hiệu hóa.
Để kích hoạt và kiểm tra hành vi restore-on-build:
- Nhấp chuột phải vào
libman.jsontrong Solution Explorer và chọn Enable Restore Client-Side Libraries on Build từ menu ngữ cảnh. - Nhấp nút Yes khi được nhắc cài đặt gói NuGet. Gói NuGet Microsoft.Web.LibraryManager.Build được thêm vào dự án:
``xml <PackageReference Include="Microsoft.Web.LibraryManager.Build" Version="3.0.71" /> ``
- Build dự án để xác nhận LibMan file restoration xảy ra. Gói
Microsoft.Web.LibraryManager.Buildchèn một MSBuild target (đích) chạy LibMan trong quá trình build dự án. - Xem feed Build của cửa sổ Output để biết nhật ký hoạt động LibMan:
``console 1>------ Build started: Project: LibManSample, Configuration: Debug Any CPU ------ 1> 1>Restore operation started... 1>Restoring library jquery@3.3.1... 1>Restoring library bootstrap@4.1.3... 1> 1>2 libraries restored in 10.66 seconds 1>LibManSample -> C:\LibManSample\bin\Debug\netcoreapp2.1\LibManSample.dll ========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ========== ``
Khi hành vi restore-on-build được kích hoạt, menu ngữ cảnh libman.json hiển thị tùy chọn Disable Restore Client-Side Libraries on Build. Chọn tùy chọn này sẽ xóa tham chiếu gói Microsoft.Web.LibraryManager.Build khỏi file dự án. Kết quả là các thư viện phía client không còn được khôi phục ở mỗi lần build nữa.
Khôi phục file thủ công
Để khôi phục thủ công các file thư viện:
- Cho tất cả dự án trong solution:
- Nhấp chuột phải vào tên solution trong Solution Explorer.
- Chọn tùy chọn Restore Client-Side Libraries.
- Cho một dự án cụ thể:
- Nhấp chuột phải vào file
libman.jsontrong Solution Explorer. - Chọn tùy chọn Restore Client-Side Libraries.
Trong khi thao tác restore đang chạy:
- Biểu tượng Task Status Center (TSC) trên thanh trạng thái Visual Studio sẽ có hoạt ảnh và đọc Restore operation started. Nhấp vào biểu tượng mở tooltip liệt kê các tác vụ nền đã biết.
- Thông báo sẽ được gửi đến thanh trạng thái và feed Library Manager của cửa sổ Output. Ví dụ:
``console Restore operation started... Restoring libraries for project LibManSample Restoring library jquery@3.3.1... (LibManSample) wwwroot/lib/jquery/jquery.min.js written to destination (LibManSample) wwwroot/lib/jquery/jquery.js written to destination (LibManSample) wwwroot/lib/jquery/jquery.min.map written to destination (LibManSample) Restore operation completed 1 libraries restored in 2.32 seconds ``
Xóa file thư viện
Để thực hiện thao tác clean, xóa các file thư viện đã được khôi phục trước đó trong Visual Studio:
- Nhấp chuột phải vào file
libman.jsontrong Solution Explorer. - Chọn tùy chọn Clean Client-Side Libraries.
Để tránh việc vô tình xóa các file không phải thư viện, thao tác clean không xóa toàn bộ thư mục. Nó chỉ xóa các file đã được bao gồm trong lần restore trước đó.
Trong khi thao tác clean đang chạy:
- Biểu tượng TSC trên thanh trạng thái Visual Studio sẽ có hoạt ảnh và đọc Client libraries operation started. Nhấp vào biểu tượng mở tooltip liệt kê các tác vụ nền đã biết.
- Thông báo được gửi đến thanh trạng thái và feed Library Manager của cửa sổ Output. Ví dụ:
Clean libraries operation started... Clean libraries operation completed 2 libraries were successfully deleted in 1.91 secs
Thao tác clean chỉ xóa file khỏi dự án. Các file thư viện vẫn ở trong bộ nhớ đệm để truy xuất nhanh hơn cho các thao tác restore trong tương lai. Để quản lý các file thư viện được lưu trong bộ nhớ đệm trên máy cục bộ, hãy sử dụng LibMan CLI.
Gỡ cài đặt file thư viện
Để gỡ cài đặt file thư viện:
- Mở
libman.json. - Đặt con trỏ văn bản bên trong object literal
librariestương ứng. - Nhấp vào biểu tượng bóng đèn xuất hiện ở lề trái, và chọn Uninstall \<library\_name\>@\<library\_version\>.
Ngoài ra, bạn có thể chỉnh sửa và lưu thủ công file manifest LibMan (libman.json). Thao tác restore chạy khi file được lưu. Các file thư viện không còn được định nghĩa trong libman.json sẽ bị xóa khỏi dự án.
Cập nhật phiên bản thư viện
Để kiểm tra phiên bản thư viện được cập nhật:
- Mở
libman.json. - Đặt con trỏ văn bản bên trong object literal
librariestương ứng. - Nhấp vào biểu tượng bóng đèn xuất hiện ở lề trái. Di chuột qua Check for updates.
LibMan kiểm tra phiên bản thư viện mới hơn phiên bản đã cài đặt. Các kết quả sau có thể xảy ra:
- Thông báo No updates found được hiển thị nếu phiên bản mới nhất đã được cài đặt.
- Phiên bản ổn định mới nhất được hiển thị nếu chưa được cài đặt.
- Nếu có một phiên bản prerelease mới hơn phiên bản đã cài đặt, phiên bản prerelease đó sẽ được hiển thị.
Để hạ xuống phiên bản thư viện cũ hơn, hãy chỉnh sửa thủ công file libman.json. Khi file được lưu, thao tác restore của LibMan:
- Xóa các file dư thừa từ phiên bản trước.
- Thêm các file mới và được cập nhật từ phiên bản mới.