فضای کاری 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 CLI برای Google Cloud برای همه فضاهای کاری IDX در دسترس است.

اگر به اجزای اضافی نیاز دارید، می‌توانید آنها را به فایل dev.nix خود اضافه کنید:

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

افزودن پسوندهای IDE

شما می توانید برنامه های افزودنی را در IDX با استفاده از رجیستری برنامه افزودنی OpenVSX به دو روش نصب کنید:

  • با استفاده از پنل Extensions در IDX برای کشف و نصب افزونه ها. این رویکرد برای برنامه های افزودنی خاص کاربر مانند:

    • تم های رنگی سفارشی
  • با افزودن پسوند به فایل dev.nix خود . هنگامی که پیکربندی فضای کاری خود را به اشتراک می گذارید، این افزونه ها به طور خودکار نصب می شوند. این رویکرد برای برنامه های افزودنی خاص پروژه مانند:

    • پسوندهای زبان برنامه نویسی، از جمله اشکال زداهای خاص زبان
    • برنامه های افزودنی رسمی برای سرویس های ابری مورد استفاده در پروژه شما
    • فرمت کننده های کد

برای رویکرد دوم، می‌توانید پسوندهای IDE را با یافتن شناسه پسوند کاملاً واجد شرایط (از فرم <publisher>.<id> ) و افزودن آن به شی idx.extensions در فایل dev.nix خود قرار دهید:

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

اضافه کردن خدمات مشترک

IDX همچنین راه‌اندازی و پیکربندی ساده‌شده‌ای را برای سرویس‌های رایجی که ممکن است در طول توسعه به آن نیاز داشته باشید، ارائه می‌دهد، از جمله:

  • ظروف
    • داکر ( services.docker.* )
  • پیام رسانی
    • شبیه ساز Pub/Sub ( services.pubsub.* )
  • پایگاه های داده
    • MySQL ( services.mysql.* )
    • Postgres ( services.postgres.* )
    • Redis ( services.redis.* )
    • آچار ( services.spanner.* )

برای جزئیات فعال کردن این سرویس‌ها در فضای کاری خود، به بخش‌های services.* از مرجع dev.nix مراجعه کنید.

سفارشی کردن پیش نمایش ها

برای جزئیات در مورد نحوه سفارشی کردن پیش‌نمایش‌های برنامه، به مستندات پیش‌نمایش‌ها مراجعه کنید.

نماد فضای کاری خود را تنظیم کنید

می‌توانید با قرار دادن یک فایل PNG به نام icon.png در کنار فایل dev.nix ، داخل فهرست .idx یک نماد سفارشی برای فضای کاری خود انتخاب کنید. IDX سپس از این نماد برای نشان دادن فضای کاری شما در داشبورد شما استفاده می کند.

از آنجایی که این فایل را می توان در کنترل منبع (مانند Git) بررسی کرد، این یک راه خوب برای کمک به همه کسانی است که روی پروژه شما کار می کنند، هنگام استفاده از IDX، نماد پروژه شما را ببینند. و از آنجایی که فایل می‌تواند در شاخه‌های Git متفاوت باشد، می‌توانید به‌عنوان مثال، هنگام کار بر روی نسخه‌های «بتا» و «تولید» برنامه‌تان، فضاهای کاری را به صورت بصری تشخیص دهید.

سفارشی سازی های خود را به یک الگو تبدیل کنید

برای تبدیل پیکربندی محیط خود به یک "محیط شروع کننده" برای هر کسی که بتواند با آن پروژه های جدید بسازد، به اسناد ایجاد یک الگوی سفارشی مراجعه کنید.

همه گزینه های سفارشی سازی را ببینید

برای شرح مفصل طرح پیکربندی محیط به مرجع dev.nix مراجعه کنید.