تخصيص مساحة عمل IDX

تتيح لك Project IDX تخصيص مساحة العمل وفقًا للاحتياجات الفريدة لمشروعك من خلال تحديد ملف إعداد .idx/dev.nix واحد يوضِّح ما يلي:

  • أدوات النظام التي تحتاج إلى أن تكون قادرًا على تشغيلها (من الوحدة الطرفية على سبيل المثال)، مثل برامج التحويل البرمجي أو البرامج الثنائية الأخرى.
  • إضافات IDE التي تحتاج إلى تثبيتها (على سبيل المثال، دعم لغة البرمجة).
  • طريقة عرض معاينات التطبيق (على سبيل المثال، أوامر تشغيل خادم الويب).
  • متغيرات البيئة العالمية المتاحة للخوادم المحلية التي تعمل في مساحة العمل.

راجِع مرجع dev.nix للحصول على وصف كامل للمعلومات المتوفّرة.

Nix وIDX

تستخدم IDX Nix لتحديد تهيئة البيئة لكل مساحة عمل. على وجه التحديد، تستخدم أداة IDX ما يلي:

  • لغة البرمجة Nix لوصف بيئات مساحة العمل. Nix هي لغة برمجة عملية. تتّبع السمات ومكتبات الحزم التي يمكنك تحديدها في ملف dev.nix بنية مجموعة سمات Nix.

  • مدير حزم Nix لإدارة أدوات النظام المتاحة لمساحة العمل. وهذا يشبه إدارة الحزم الخاصة بنظام التشغيل مثل APT (apt وapt-get) وHomebrew (brew) وdpkg.

بما أنّ بيئات Nix قابلة للتكرار وبيانية، في سياق IDX، يعني ذلك أنّه يمكنك مشاركة ملف إعداد Nix كجزء من مستودع Git لضمان أنّ كل من يعمل في مشروعك لديه إعدادات البيئة نفسها.

مثال أساسي

يوضح المثال التالي تهيئة أساسية للبيئة تتيح المعاينات:

{ pkgs, ... }: {

  # Which nixpkgs channel to use.
  channel = "stable-23.11"; # or "unstable"

  # Use https://search.nixos.org/packages to find packages
  packages = [
    pkgs.nodejs_18
  ];

  # Sets environment variables in the workspace
  env = {
    SOME_ENV_VAR = "hello";
  };

  # Search for the extensions you want on https://open-vsx.org/ and use "publisher.id"
  idx.extensions = [
    "angular.ng-template"
  ];

  # Enable previews and customize configuration
  idx.previews = {
    enable = true;
    previews = {
      web = {
        command = [
          "npm"
          "run"
          "start"
          "--"
          "--port"
          "$PORT"
          "--host"
          "0.0.0.0"
          "--disable-host-check"
        ];
        manager = "web";
      };
    };
  };
}

إضافة أدوات النظام

لإضافة أدوات نظام إلى مساحة العمل، مثل برامج التحويل البرمجي أو برامج واجهة سطر الأوامر (CLI) لخدمات السحابة الإلكترونية، ابحث عن معرّف الحزمة الفريد في سجلّ حزمة Nix وأضِفه إلى الكائن packages في ملف dev.nix، مسبوقًا بـ `pkgs.:

{ pkgs, ... }: {
  # Which nixpkgs channel to use.
  channel = "stable-23.11"; # or "unstable"

  # Use https://search.nixos.org/packages to find packages
  packages = [
    pkgs.nodejs_18
  ];
  ...
}

يختلف هذا عن الطريقة المعتادة لتثبيت حِزم النظام باستخدام تطبيقات إدارة الحزم الخاصة بنظام التشغيل، مثل APT (apt وapt-get) وHomebrew (brew) وdpkg. ومن خلال تقديم وصف مفصّل لحزم النظام المطلوبة تحديدًا، يصبح من الأسهل مشاركة مساحات عمل IDX وإعادة إنتاجها.

استخدام البرامج الثنائية للعقدة المحلية

كما هو الحال على جهازك المحلي، يمكن تنفيذ البرامج الثنائية المرتبطة بحزم العُقد المثبَّتة محليًا (أي الحزم المحددة في package.json) في لوحة طرفية من خلال استدعائها باستخدام الأمر npx.

ولتسهيل الأمر، إذا كنت في دليل يحتوي على مجلد node_modules (مثل الدليل الجذري لمشروع ويب)، يمكن استدعاء البرامج الثنائية المثبّتة محليًا مباشرةً، بدون البادئة npx.

إضافة مكوّنَين (gcloud)

يتوفّر الإعداد التلقائي لواجهة سطر الأوامر gcloud في Google Cloud لجميع مساحات عمل IDX.

إذا كنت بحاجة إلى مكوّنات إضافية، يمكنك إضافتها إلى ملف dev.nix على النحو التالي:

{ pkgs }: {
  packages = [
    ...
    (pkgs.google-cloud-sdk.withExtraComponents [
      pkgs.google-cloud-sdk.components.cloud-datastore-emulator
    ])
    ...
  ];
}

إدراج إضافات IDE

يمكنك تثبيت الإضافات في IDX باستخدام سجلّ الإضافات OpenVSX بطريقتَين:

  • باستخدام لوحة الإضافات في IDX لاكتشاف الإضافات وتثبيتها. يناسب هذا الأسلوب الإضافات الخاصة بالمستخدم، مثل:

    • مظاهر الألوان المخصصة
  • من خلال إدراج امتدادات في ملف dev.nix. سيتم تثبيت هذه الإضافات تلقائيًا عند مشاركة إعدادات مساحة العمل. وهذا النهج هو الأفضل للإضافات الخاصة بالمشروع، مثل:

    • إضافات لغة البرمجة، بما في ذلك برامج تصحيح الأخطاء بلغات معيّنة
    • الإضافات الرسمية لخدمات السحابة الإلكترونية المستخدمة في مشروعك
    • أدوات تنسيق الرموز

أمّا الطريقة الثانية، فيمكنك تضمين إضافات بيئة التطوير المتكاملة (IDE) في ملف dev.nix من خلال البحث عن معرّف الإضافة المؤهّلة بالكامل (النموذج <publisher>.<id>) وإضافته إلى الكائن idx.extensions، على النحو التالي:

{ pkgs, ... }: {
  ...
  # Search for the extensions you want on https://open-vsx.org/ and use the format
  # "<publisher>.<id>"
  idx.extensions = [
    "angular.ng-template"
  ];
  ...
}

إضافة خدمات مشتركة

توفر IDX أيضًا عملية إعداد وتهيئة مبسطة للخدمات الشائعة التي قد تحتاجها أثناء التطوير، بما في ذلك:

  • الحاويات
    • Docker (services.docker.*)
  • المراسلة
    • محاكي نشر/اشتراك (services.pubsub.*)
  • قواعد البيانات
    • MySQL (services.mysql.*)
    • Postgres (services.postgres.*)
    • ريديس (services.redis.*)
    • مفتاح البراغي (services.spanner.*)

للحصول على تفاصيل حول تفعيل هذه الخدمات في مساحة العمل، يُرجى الاطّلاع على الأجزاء services.* من مرجع dev.nix.

تخصيص المعاينات

للحصول على تفاصيل حول كيفية تخصيص معاينات تطبيقك، يمكنك الاطّلاع على مستندات المعاينات.

الاطّلاع على جميع خيارات التخصيص

راجِع مرجع dev.nix للحصول على وصف تفصيلي لمخطط ضبط البيئة.