Настройте свое рабочее пространство IDX

Цель Project IDX — быть максимально полезным для разработчиков. Один из способов, с помощью которого IDX достигает этой цели, — предоставить разработчикам свободу и гибкость в установке нужных инструментов для любого конкретного проекта в своем рабочем пространстве и настройке параметров, чтобы их рабочие пространства работали на них.

Никс + 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];
}

Вы можете поискать доступные пакеты здесь: стабильный-23.11 или нестабильный .

Тип: список посылки

По умолчанию: [ ]

канал

канал nixpkgs, который нужно использовать.

Этот канал определяет содержимое аргумента pkgs .

Тип: один из «стабильный-23.05», «стабильный-23.11», «нестабильный».

По умолчанию: "stable-23.11"

окружение

Переменные среды, которые устанавливаются внутри среды разработчика.

Они распространяются на все ваши оболочки и сервер предварительного просмотра. Переменные среды могут быть особенно полезны, если вашему приложению требуется определенный набор переменных.

Пример:

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

Тип: набор атрибутов чего угодно

По умолчанию: { }

idx.extensions

Расширения кода, которые вы хотите установить в своем рабочем пространстве IDX.

Это список полных идентификаторов расширений, т. е ${publisherId}.${extensionId} .

Вы можете найти список доступных расширений в реестре Open VSX и ввести их в свой файл dev.nix с помощью ${publisherId}.${extensionId} .

Тип: список (непустая строка или путь).

По умолчанию: [ ]

idx.previews.enable

Установите для этого параметра значение true , чтобы включить предварительный просмотр IDX.

Эта функция позволяет автоматически запускать и перезагружать приложения по мере их разработки.

Тип: логический

По умолчанию: 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.*.команда

Команда для выполнения

Тип: список строк

По умолчанию: [ ]

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

Команды, выполняемые при каждом открытии рабочей области.

Это может быть полезно для начала сборки наблюдателей. Например, здесь мы указываем две команды для запуска:

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

Тип: набор атрибутов (путь или строка).

По умолчанию: { }

Services.docker.enable

Включить ли докер без Root.

Тип: логический

По умолчанию: false

Пример: true