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

Project IDX позволяет адаптировать рабочее пространство к уникальным потребностям вашего проекта, определив один файл конфигурации .idx/dev.nix , который описывает:

  • Системные инструменты , которые вам необходимо запускать (например, из Терминала), такие как компиляторы или другие двоичные файлы.
  • Необходимые расширения IDE (например, поддержка языков программирования).
  • Как должны отображаться предварительные просмотры вашего приложения (например, команды для запуска вашего веб-сервера).
  • Глобальные переменные среды, доступные локальным серверам, работающим в вашей рабочей области.

См. ссылку dev.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 также предлагает упрощенную установку и настройку общих сервисов, которые могут вам понадобиться во время разработки, в том числе:

  • Контейнеры
    • Докер ( services.docker.* )
  • Обмен сообщениями
    • Эмулятор Pub/Sub ( services.pubsub.* )
  • Базы данных
    • MySQL ( services.mysql.* )
    • Постгрес ( services.postgres.* )
    • Redis ( services.redis.* )
    • Гаечный ключ ( services.spanner.* )

Подробную информацию о включении этих служб в ваше рабочее пространство см. в разделах services.* справочника по dev.nix .

Настройте предварительный просмотр

Подробную информацию о том, как настроить предварительный просмотр приложения, см. в документации по предварительным просмотрам .

Посмотреть все варианты настройки

Подробное описание схемы конфигурации среды см. в справочнике по dev.nix .