自訂 Firebase Studio 工作區

Firebase Studio 可讓您定義單一 .idx/dev.nix 設定檔,描述下列項目,根據專案的獨特需求調整工作區:

  • 您需要能夠執行的系統工具 (例如從終端機),例如編譯器或其他二進位檔。
  • 您需要安裝的擴充功能 (例如程式設計語言支援)。
  • 應用程式預覽的顯示方式 (例如執行網路伺服器的指令)。
  • 可供工作區中執行的本機伺服器使用的全域環境變數

如要查看完整說明,請參閱 dev.nix 參考資料

Nix 和 Firebase Studio

Firebase Studio 使用 Nix 定義每個工作區的環境設定。具體來說, Firebase Studio 使用:

  • Nix 程式設計語言,用於描述工作區環境。Nix 是一種函數式程式設計語言。您可以在 dev.nix 檔案中定義的屬性和套件程式庫,遵循 Nix 屬性集語法

  • Nix 套件管理員,可管理工作區可用的系統工具。這與作業系統專用的套件管理員類似,例如 APT (aptapt-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";
      };
    };
  };
}

新增系統工具

如要在工作區中新增編譯器或雲端服務的 CLI 程式等系統工具,請在 Nix 套件登錄檔中找出專屬套件 ID,然後在 dev.nix 檔案的 packages 物件中新增該 ID,並加上 `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 (aptapt-get)、Homebrew (brew) 和 dpkg) 安裝系統套件的方式不同。明確說明需要哪些系統套件,有助於輕鬆分享及重現 Firebase Studio 工作區。

使用本機節點二進位檔

與本機電腦一樣,您可以在「終端機」面板中,透過 npx 指令叫用與本機安裝節點套件相關的二進位檔 (例如 package.json 中定義的套件)。

為提供更多便利性,如果您位於含有 node_modules 資料夾的目錄 (例如網頁專案的根目錄),可以直接叫用本機安裝的二進位檔,不必加上 npx 前置字串。

新增 gcloud 元件

所有 Firebase Studio 工作區都能使用 Google Cloudgcloud CLI 預設設定

如需其他元件,可以將其新增至 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 檔案中新增擴充功能。分享工作區設定時,系統會自動安裝這些擴充功能。這種方法最適合專案專屬擴充功能,例如:

    • 程式設計語言擴充功能,包括特定語言的偵錯工具
    • 專案中使用的雲端服務官方擴充功能
    • 程式碼格式設定工具

如果是後者,您可以在 dev.nix 檔案中加入 IDE 擴充功能,方法是找出完整擴充功能 ID (格式為 <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參考資料的相關部分。

自訂預覽畫面

如要進一步瞭解如何自訂應用程式預覽畫面,請參閱「預覽應用程式」。

設定工作區圖示

如要為工作區選擇自訂圖示,請在與 dev.nix 檔案相同的層級,將名為 icon.png 的 PNG 檔案放在 .idx 目錄中。Firebase Studio 隨後會使用這個圖示,在資訊主頁中代表您的工作區。

由於這個檔案可以簽入來源控管 (例如 Git),因此當使用 Firebase Studio 時,這項做法有助於讓專案的所有協作者看到相同的專案圖示。由於檔案在不同 Git 分支中可能有所差異,因此您可以使用這個圖示,以視覺化方式區分 Beta 版和正式版應用程式工作區,以及用於其他用途。

將自訂項目轉換為範本

如要將環境設定轉換為「入門環境」,供任何人用來建構新專案,請參閱「建立自訂範本」文件。

探索所有自訂選項

如需環境設定結構定義的詳細說明,請參閱 dev.nix 參考資料

下載檔案

如要以 ZIP 檔案格式下載檔案,請按照下列步驟操作:

  • 在「檔案總管」窗格中,對任何目錄按一下滑鼠右鍵,然後選取「壓縮並下載」

如要下載專案目錄中的所有內容,請按照下列步驟操作:

  1. 依序選取「File」>「Open Folder」

  2. 接受預設的 /home/user 目錄。

  3. 檔案載入後,在工作目錄上按一下滑鼠右鍵,然後選取「壓縮並下載」。如果使用 App Prototyping agent,工作目錄會是 studio。如果使用範本或上傳的專案,這就是專案名稱。

  4. 系統提示您重建環境時,請按一下「取消」

  5. 下載完成後,請從「檔案」選單重新開啟工作目錄,返回工作區。

後續步驟