ویرگول
ورودثبت نام
شراره شادالو
شراره شادالو
شراره شادالو
شراره شادالو
خواندن ۲ دقیقه·۳ ساعت پیش

اینترنت ملی و مدیریت Dependency در Node.js

با محدود شدن دسترسی به اینترنت در ایران، یکی از بزرگ‌ترین چالش‌ها برای توسعه‌دهندگان، نصب و مدیریت پکیج‌ها تو پروژه‌های Node.js شده. کاری که قبلاً با یه npm install چند ثانیه طول می‌کشید، الان ممکنه با خطا، زمان طولانی نصب یا Timeout روبه‌رو بشه.

پس چطور زنده بمونیم؟


استفاده از npm registry و mirror جایگزین

اولین قدم ساده و سریع، استفاده از mirror به جای registry اصلی npm هست:

npm config set registry https://registry.npmmirror.com

یا فقط برای یک نصب خاص:

npm install --registry=https://registry.npmmirror.com

تو خیلی از مواقع، همین تغییر کوچک کافی هست تا دوباره کارمون راه بیفته.


Docker:

اگه پروژه‌ت Dockerized باشه، خیلی از مشکلات از قبل حل شدن:

  • استفاده از Docker Hub mirror

  • ساخت imageهایی که dependencyها از قبل داخلش نصب شده

  • بیلد گرفتن در CI/CD خارج از ایران و فقط pull کردن image نهایی

تو این حالت، Docker دیگه فقط یه ابزار نیست، یه استراتژی بقاست.


مدیریت Cache

Cache یکی از مهم‌ترین ابزارهاست. به زبون ساده، cache یعنی ذخیره‌سازی محلی پکیج‌ها و artifactها تا دفعه بعد نیازی به دانلود دوباره نباشه.

چند نوع cache مهم داریم:

  • Npm Cache: با دستور --prefer-offline می‌تونیم حتی بدون اینترنت پکیج‌ها رو نصب کنیم:

npm install --prefer-offline
  • Yarn Cache: مثل npm، پکیج‌ها رو تو حافظه محلی نگه می‌داره و سرعت نصب رو بالا می‌بره.

  • Pnpm Store: پکیج‌ها رو به صورت اشتراکی ذخیره می‌کنه و چند پروژه می‌تونن ازش استفاده کنن.

  • Cache در Nexus یا Repository Managerهای دیگه: پکیج‌ها یه بار دانلود می‌شن و کل تیم بدون اینترنت بهشون دسترسی داره.


Registry داخلی؛ مخصوص تیم‌ها

برای تیم‌ها و پروژه‌های سازمانی، بهترین کار راه‌اندازی یه registry داخلی هست:

  • Verdaccio

  • Nexus

  • Artifactory

این روش وابستگی مستقیم به اینترنت خارجی رو حذف می‌کنه و مدیریت پکیج‌ها رو ساده‌تر و قابل پیش‌بینی‌تر می‌کنه.


Nexus چیه و چطور کار می‌کنه؟

Nexus یه repository manager حرفه‌ایه که مخصوص تیم‌ها و شرکت‌های بزرگ طراحی شده تا کنترل کامل روی پکیج‌ها و وابستگی‌ها داشته باشن.

چند قابلیت مهم Nexus:

  • نگهداری انواع پکیج‌ها:

    • Java: Maven, Gradle

    • Node.js: npm

    • Python: PyPI

    • Docker: Docker images

    • و حتی Ruby، NuGet و غیره

  • Mirror و Cache: پکیج‌ها یه بار دانلود می‌شن و دفعه بعد از Nexus داخلی میاد، بدون نیاز به اینترنت خارجی.

  • امنیت و کنترل دسترسی: می‌تونی مشخص کنی چه کسی به چه پکیجی دسترسی داشته باشه و قبل از استفاده، نسخه‌ها بررسی بشن.

برای Node.js کافیه registry داخلی رو تنظیم کنیم:

npm set registry http://nexus.local:8081/repository/npm-proxy/ npm install

حتی می‌تونیم پکیج‌های داخلی خودمون رو تو Nexus منتشر کنیم و همه تیم ازش استفاده کنه.

به طور خلاصه، Nexus یه راهکار حرفه‌ایه که کار مدیریت dependencyها و artifactها رو ساده، امن و قابل پیش‌بینی می‌کنه، مخصوصاً وقتی اینترنت خارجی دسترسی نداریم.


جمع‌بندی

با ترکیب چند روش ساده، می‌تونیم جریان توسعه رو حتی تو شرایط محدودیت اینترنت ادامه بدیم:

  • mirrorهای جایگزین

  • Docker

  • cacheهای محلی و مرکزی

  • registry داخلی

با این استراتژی‌ها، پروژه‌ها می‌تونن بدون وقفه و با اطمینان پیش برن.


ci cdاینترنت
۱
۰
شراره شادالو
شراره شادالو
شاید از این پست‌ها خوشتان بیاید