مدیریت پکیجهای سمت کلاینت
پروژههای جدیدی که با استفاده از قالب پیشفرض ایجاد میشوند، شامل یک پوشه با نام lib، در شاخهی wwwroot هستند که حاوی این فایلها میباشند:
اینها به عنوان حداقلهای ایجاد یک وب اپلیکیشن، برای قالب انتخاب شده در نظر گرفته شدهاند. اما فرض کنید بعد از مدتی میخواهیم ورژن bootstrap استفاده شده در پروژه را ارتقاء دهیم؛ در این حالت چندین انتخاب داریم:
- دانلود مستقیم فایل موردنیاز و جایگزین کردن آن با نسخهی فعلی
- حذف پوشهی wwwroot/lib و نصب مجدد پوشهها از طریق NPM یا Yarn
- استفاده از bower و سفارشیسازی مسیر قرار گرفتن فایلها توسط browerrc.
روش اول، به نسبت سادهتر است؛ اما مشکل اینجاست که همه چیز به صورت دستی انجام خواهد گرفت. یعنی برای نسخههای بعدی همین روال باید مجدداً انجام شود. در روش دوم نیز مشکل اینجاست که مسیر قرار گرفتن پکیجهای پروژه، از این به بعد node_modules خواهند بود و نیاز به یک تنظیم اضافی در فایل Startup.cs و مطلع کردن ASP.NET Core برای serve کردن فایلهای سمت کلاینت است همچنین نیاز خواهد بود که تمامی ارجاعات داخل فایل Layout.cshtmlـ نیز از lib به node_modules تغییر پیدا کنند. در نهایت روش آخر نیز به دلیل
منسوخ شدن bower پیشنهاد نمیشود.
استفاده از LibMan
LibMan یک قابلیت جدید است که از نسخهی Visual Studio 2017 برای مدیریت پکیجهای سمت کلاینت اضافه شده است. این ابزار به صورت cross platform تهیه شده است؛ یعنی در خارج از Visual Studio نیز قابل استفاده میباشد. در واقع این ابزار را میتوانیم به صورت Globally روی سیستم خود نصب کنیم و از طریق خط فرمان همانند NPM از آن استفاده کنیم.
نصب و استفاده از LibMan
این ابزار ابتدا توسط Mads Kristensen با عنوان
Client-Side Library Installer به صورت یک افزونه برای Visual Studio 2015 توسعه داده شد که در نهایت تیم ASP.NET این ابزار را به صورت توکار به Visual Studio 2017 اضافه کرد. در نتیجه اگر از نسخهی 2017 ویژوال استودیو استفاده میکنید، برای استفاده از این ابزار نیاز به نصب پکیج خاصی نخواهید داشت. برای استفاده از این ابزار در سیستمعاملهای به غیر از ویندوز نیز یک CLI تهیه شده است که از طریق خط فرمان قابل استفاده میباشد. برای نصب این ابزار کافی است ابتدا آن را به صورت سراسری نصب کنید:
dotnet tool install -g Microsoft.Web.LibraryManager.Cli
قدم بعدی اضافه کردن فایلی با عنوان libman.json درون پروژه است. برای افزودن این فایل کافی است دستور زیر را در خطر فرمان وارد کنید:
با صدور فرمان فوق فایل مربوطه درون پروژه ایجاد میشود که در واقع یک فایل json ساده برای مدیریت پکیجهای سمت کلاینت است:
{
"version": "1.0",
"defaultProvider": "cdnjs",
"libraries": []
}
همانطور که مشاهده میکنید، میتوانیم منبع دریافت پکیجها را نیز تعیین کنیم که در حالت پیشفرض بر روی cdnjs تنظیم شدهاست و در واقع یک
Content Delivery Network برای تعداد بیشماری پکیج سمت کلاینت است. درون آرایهی libraries نیز میتوانیم پکیجهای موردنیاز خود را وارد کنیم. حتی برای هر پکیج هم میتوانیم provider را override نمائیم. فرض کنید میخواهیم کتابخانهی bootstrap را به پروژه اضافه کنیم. در اینحالت کافی است دستور زیر را برای نصب پکیج مربوطه صادر نمائیم:
libman install bootstrap@4.3.1 --provider unpkg --destination wwwroot/lib/bootstrap
در نهایت فایل libman.json چنین ساختاری پیدا خواهد کرد:
{
"version": "1.0",
"defaultProvider": "cdnjs",
"libraries": [
{
"provider": "unpkg",
"library": "bootstrap@4.3.1",
"destination": "wwwroot/lib/bootstrap"
}
]
}
برای نصب مجدد پکیج هم میتوانید از دستور libman restore استفاده کنید؛ در این حالت دقیقا مانند Nuget، پکیجها از روی فایل libman.json از provider مربوطه دانلود و به پروژه اضافه خواهند شد. در ادامه لیست دستورات موجود را مشاهده میکنید: