Как настроить рабочую область в Firebase Studio

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

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

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

Nix и Firebase Studio

Firebase Studio использует Nix для определения конфигурации среды для каждого рабочего пространства. В частности, Firebase Studio использует:

  • Язык программирования Nix для описания рабочих сред. Nix — это функциональный язык программирования. Атрибуты и библиотеки пакетов, которые можно определить в файле dev.nix соответствуют синтаксису набора атрибутов Nix .

  • Менеджер пакетов Nix для управления системными инструментами, доступными в вашем рабочем пространстве. Он похож на менеджеры пакетов, специфичные для ОС, такие как APT ( apt и apt-get ), Homebrew ( brew ) и dpkg .

Поскольку среды Nix являются воспроизводимыми и декларативными, в контексте Firebase Studio это означает, что вы можете поделиться своим файлом конфигурации 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_20
  ];

  # 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";
        # Optionally, specify a directory that contains your web app
        # cwd = "app/client";
      };
    };
  };
}

Добавить системные инструменты

Чтобы добавить в рабочую область системные инструменты, такие как компиляторы или программы командной строки для облачных сервисов, найдите уникальный идентификатор пакета в реестре пакетов 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_20
  ];
  ...
}

Это отличается от того, как обычно устанавливаются системные пакеты с помощью менеджеров пакетов, специфичных для ОС, таких как APT ( apt и apt-get ), Homebrew ( brew ) и dpkg . Декларативное описание того, какие именно системные пакеты необходимы, упрощает совместное использование и воспроизведение рабочих пространств Firebase Studio .

Используйте локальные исполняемые файлы Node.js.

Как и на локальном компьютере, исполняемые файлы, относящиеся к локально установленным пакетам Node.js (например, пакетам, определенным в вашем package.json ), можно запустить в терминале, используя команду npx .

Для дополнительного удобства, если вы находитесь в каталоге с папкой node_modules (например, в корневом каталоге веб-проекта), локально установленные бинарные файлы можно запускать напрямую, без префикса npx .

Добавить компоненты gcloud

Конфигурация CLI gcloud для Google Cloud по умолчанию доступна для всех рабочих областей Firebase Studio .

Если вам нужны дополнительные компоненты, вы можете добавить их в файл dev.nix :

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

Добавить расширения IDE

Установить расширения в Firebase Studio с помощью реестра расширений OpenVSX можно двумя способами:

  • Используйте панель «Расширения» в Firebase Studio для поиска и установки расширений. Этот подход лучше всего подходит для расширений, предназначенных для конкретных пользователей , например:

    • Пользовательские цветовые темы
    • Эмуляция редактора, например, VSCodeVim
  • Добавьте расширения в файл 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"
  ];
  ...
}

Добавить общие сервисы

Firebase Studio также предлагает упрощенную настройку и конфигурацию для распространенных сервисов, которые могут вам понадобиться во время разработки, включая:

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

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

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

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

Установите значок рабочего пространства

Вы можете выбрать собственную иконку для своего рабочего пространства, поместив файл PNG с именем icon.png в каталог .idx на том же уровне, что и файл dev.nix . Firebase Studio будет использовать эту иконку для отображения вашего рабочего пространства на панели мониторинга.

Поскольку этот файл можно добавить в систему контроля версий (например, Git), это хороший способ помочь всем, кто работает над вашим проектом, видеть один и тот же значок вашего проекта при использовании Firebase Studio . А поскольку файл может различаться в разных ветках Git, вы можете использовать этот значок для визуального различения рабочих областей бета-версии и продакшена, а также для других целей.

Превратите свои настройки в шаблон.

Чтобы превратить конфигурацию вашей среды в «стартовую среду», которую может использовать любой желающий для создания новых проектов, см. документацию по созданию пользовательских шаблонов .

Изучите все варианты персонализации.

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

Загрузите ваши файлы

Чтобы загрузить файлы в виде ZIP-архива:

  • Щелкните правой кнопкой мыши по любой папке в панели Проводника и выберите «Заархивировать и загрузить» .

Чтобы загрузить все файлы из каталога вашего проекта:

  1. Выберите Файл > Открыть папку .

  2. Примите каталог /home/user по умолчанию.

  3. После загрузки файлов щелкните правой кнопкой мыши по рабочей директории и выберите «Заархивировать и загрузить» . Если вы используете App Prototyping agent , вашей рабочей директорией будет studio . Если вы используете шаблон или загруженный проект, это будет название вашего проекта.

  4. Когда появится запрос на пересоздание среды, нажмите «Отмена» .

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

Следующие шаги