برای اینکه بتوانید بدون اینترنت از پکیجهای npm استفاده کنید، باید یک سرور محلی (رجیستری خصوصی) راهاندازی کنید که پکیجها را کش (Cache) کرده و در دسترس قرار دهد. Verdaccio یکی از بهترین ابزارها برای این کار است. در اینجا مراحل کامل را توضیح میدهم:
Verdaccio یک پروکسی رجیستری npm سبکوزن و منبعباز (Open Source) است که به شما اجازه میدهد یک رجیستری خصوصی برای پکیجهای npm ایجاد کنید. این ابزار عمدتاً برای توسعهدهندگان و تیمهایی استفاده میشود که میخواهند پکیجهای خصوصی خود را مدیریت کنند یا یک کش آفلاین برای پکیجهای عمومی npm داشته باشند.
ویژگیهای اصلی Verdaccio:
-
سبک و سریع: بر اساس Node.js ساخته شده و منابع کمی مصرف میکند.
-
نصب آسان: میتوان آن را بهراحتی با npm یا docker نصب کرد.
-
امنیت: از احراز هویت کاربران پشتیبانی میکند (با پلاگینهایی مثل LDAP، htpasswd و غیره).
-
کشینگ: پکیجهای دانلود شده را ذخیره میکند تا در دفعات بعدی سریعتر در دسترس باشند.
-
پشتیبانی از Scopeها: مثل @company/private-package برای سازماندهی بهتر پکیجها.
-
پلاگینها: امکان توسعه با پلاگینهای سفارشی برای احراز هویت، ذخیرهسازی و غیره.
کاربردهای Verdaccio:
-
توسعه داخلی شرکتی: مدیریت پکیجهای خصوصی در یک تیم یا سازمان.
-
آفلاین مود: استفاده در محیطهایی که دسترسی به اینترنت محدود است.
-
تست پکیجها قبل از انتشار: انتشار آزمایشی پکیجها در یک رجیستری محلی قبل از ارسال به npm اصلی.
-
کاهش وابستگی به اینترنت: با کش کردن پکیجهای پراستفاده.
راهحل اصلی: استفاده از Verdaccio به عنوان رجیستری آفلاین
۱. نصب و راهاندازی Verdaccio
npm install -g verdaccio
سپس آن را اجرا کنید:
verdaccio
بهصورت پیشفرض، سرور در http://localhost:4873 در دسترس خواهد بود.
۲. تنظیم npm برای استفاده از رجیستری محلی
برای همیشه از رجیستری محلی استفاده کنید:
npm set registry http://localhost:4873
یا موقتاً برای یک دستور:
npm --registry http://localhost:4873 install lodash
۳. کش کردن پکیجهای مورد نیاز (وقتی اینترنت دارید)
هر پکیجی که با Verdaccio نصب شود، بهصورت خودکار در پوشه storage ذخیره میشود (معمولاً در آدرس زیر):
~/.config/verdaccio/storage
حالا اگر اینترنت قطع شود، Verdaccio از پکیجهای کش شده استفاده میکند.
۴. اضافه کردن پکیجهای ضروری به صورت دستی (اگر کش نشده باشند)
اگر برخی پکیجها از قبل کش نشدهاند، میتوانید آنها را در یک محیط متصل به اینترنت دانلود و به صورت دستی به storage اضافه کنید:
npm pack package-name # فایل .tgz پکیج را دانلود میکند
سپس فایل .tgz را به پوشه storage منتقل کنید.
۵. انتشار پکیجهای خصوصی (اختیاری)
اگر پکیجهای داخلی دارید، میتوانید آنها را در Verdaccio منتشر کنید:
npm publish --registry http://localhost:4873
حالا حتی بدون اینترنت هم میتوانید از این پکیجها استفاده کنید.