فضای کاری IDX خود را سفارشی کنید

هدف Project IDX این است که تا حد امکان برای توسعه دهندگان مفید باشد. یکی از راه‌هایی که IDX این کار را انجام می‌دهد این است که به توسعه‌دهندگان آزادی و انعطاف‌پذیری بدهد تا ابزارهای مناسب برای هر پروژه را روی فضای کاری خود نصب کنند و تنظیمات را سفارشی کنند تا فضای کاری آنها برای آنها کار کند.

Nix + IDX

IDX از Nix برای تعریف پیکربندی محیط برای هر فضای کاری استفاده می کند. Nix یک مدیر بسته کاملاً کاربردی است و شناسه‌های منحصربه‌فردی را به هر وابستگی اختصاص می‌دهد، که در نهایت به این معنی است که محیط شما می‌تواند چندین نسخه از یک وابستگی را به طور یکپارچه داشته باشد. همچنین قابل تکرار و اعلامی است. در زمینه IDX، این بدان معناست که می‌توانید فایل پیکربندی Nix خود را در بین فضاهای کاری به اشتراک بگذارید تا پیکربندی محیط یکسانی بارگیری شود.

IDX محیط پیش نمایش و تنظیمات بسته فضای کاری را مستقیماً از مخزن کد با فایل .idx/dev.nix تعریف می کند. ویژگی‌ها و کتابخانه‌های بسته‌ای که می‌توانید در این فایل تعریف کنید ، از نحو مجموعه ویژگی‌های Nix پیروی می‌کنند.

مثال زیر یک پیکربندی محیطی اولیه را نشان می دهد که پیش نمایش ها را فعال می کند:

{ 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";
      };
    };
  };
}

ویژگی های Nix و کتابخانه های بسته

بسته ها

بسته هایی برای نصب در محیط.

می‌توانید از آرگومان pkgs برای انتخاب بسته‌ها برای نصب استفاده کنید، یعنی pkgs.python3 . توجه داشته باشید که محتوای pkgs به گزینه کانال channel انتخاب شده بستگی دارد.

مثال:

{pkgs, ...}: {
  channel = "stable-23.11";
  packages = [pkgs.vim];
}

می‌توانید بسته‌های موجود را در اینجا جستجو کنید: stable-23.11 یا unstable .

نوع: لیست بسته

پیش فرض: [ ]

کانال

کانال nixpkgs برای استفاده.

این کانال محتویات آرگومان pkgs را تعریف می کند.

نوع: یکی از "stable-23.05"، "stable-23.11"، "unstable"

پیش فرض: "stable-23.11"

env

متغیرهای محیطی که در داخل محیط توسعه دهنده تنظیم می شوند.

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

مثال:

{pkgs, ...}: {
  env = {
    HELLO = "world";
  };
}

نوع: مجموعه ویژگی هر چیزی

پیش فرض: { }

idx.extensions

پسوندهای کدی که می خواهید در فضای کاری IDX خود نصب کنید.

این فهرستی از شناسه‌های برنامه افزودنی کاملاً واجد شرایط است، یعنی ${publisherId}.${extensionId} .

می‌توانید فهرستی از برنامه‌های افزودنی موجود را در Open VSX Registry بیابید و آنها را با ${publisherId}.${extensionId} در فایل dev.nix خود وارد کنید.

نوع: فهرست (رشته یا مسیر غیر خالی)

پیش فرض: [ ]

idx.previews.enable

برای فعال کردن IDX Previews، این را روی true تنظیم کنید.

این ویژگی راهی برای اجرا و بارگیری خودکار برنامه‌های شما در حین توسعه آنها فراهم می‌کند.

نوع: بولی

پیش فرض: true

مثال: true

idx.previews.previews

پیش نمایش تنظیمات

دستوراتی را که IDX در محیط توسعه دهنده خود اجرا می کند را تعریف کنید.

مثال:

{pkgs, ...}: {
  idx.previews = {
    enable = true;
    previews = {
      web = {
        command = ["yes"];
        cwd = "subfolder";
        manager = "web";
        env = {
          HELLO = "world";
        };
      };
    };
  };
}

نوع: مجموعه ویژگی (زیر ماژول)

پیش فرض: { }

idx.previews.previews.*.command

دستور اجرا

نوع: لیست رشته ها

پیش فرض: [ ]

idx.previews.previews.*.cwd

دایرکتوری کار

نوع: رشته

پیش فرض: ""

idx.previews.previews.*.env

متغیرهای محیطی برای تنظیم

نوع: مجموعه ویژگی های رشته

پیش فرض: { }

idx.previews.previews.*.manager

مدیر

نوع: یکی از web ، flutter

idx.workspace.onCreate

دستوراتی که باید هنگام ایجاد و باز شدن فضای کاری برای اولین بار اجرا شوند.

این می تواند برای راه اندازی محیط توسعه مفید باشد. به عنوان مثال، در اینجا ما npm install برای اجرا مشخص می کنیم:

{pkgs, ...}: {
  idx.workspace.onCreate = {
    npm-install = "npm install";
  };
}

نوع: مجموعه ویژگی (مسیر یا رشته)

پیش فرض: { }

idx.workspace.onStart

دستوراتی که هر زمان که فضای کاری باز می شود اجرا می شود.

این می تواند برای شروع ساخت ناظران مفید باشد. به عنوان مثال، در اینجا ما 2 دستور را برای اجرا مشخص می کنیم:

{pkgs, ...}: {
  idx.workspace.onStart = {
    npm-watch-fe = "npm run watch:frontend";
    npm-watch-be = "npm run watch:backend";
  };
}

نوع: مجموعه ویژگی (مسیر یا رشته)

پیش فرض: { }

services.docker.enable

فعال کردن روتلس داکر.

نوع: بولی

پیش فرض: false

مثال: true