借助 Firebase Studio,您可以通过定义一个 .idx/dev.nix
配置文件来描述以下内容,从而根据项目的独特需求量身定制工作区:
- 您需要能够运行的系统工具(例如从终端运行),例如编译器或其他二进制文件。
- 您需要安装的扩展程序(例如,编程语言支持)。
- 应用预览应如何显示(例如,运行 Web 服务器的命令)。
- 可供在工作区中运行的本地服务器使用的全局环境变量。
如需详细了解可用功能,请参阅 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";
};
};
};
}
添加系统工具
如需向您的工作区添加系统工具(例如适用于云服务的编译器或 CLI 程序),请在 Nix 软件包注册库中查找唯一的软件包 ID,并将其添加到 dev.nix
文件的 packages
对象中,前缀为 `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 工作区更易于共享和重现。
使用本地节点二进制文件
与本地安装的节点软件包相关的二进制文件(例如,在 package.json
中定义的软件包)可以通过使用 npx
命令调用它们,在“终端”面板中执行。
此外,如果您位于包含 node_modules
文件夹的目录中(例如 Web 项目的根目录),则可以直接调用本地安装的二进制文件,而无需使用 npx
前缀。
添加 gcloud
组件
所有 Firebase Studio 工作区都可以使用适用于 Google Cloud 的 gcloud
CLI 的默认配置。
如果您需要其他组件,可以将其添加到 dev.nix
文件中:
{ pkgs }: {
packages = [
...
(pkgs.google-cloud-sdk.withExtraComponents [
pkgs.google-cloud-sdk.components.cloud-datastore-emulator
])
...
];
}
添加 IDE 扩展程序
您可以通过以下两种方式使用 OpenVSX 扩展程序注册表在 Firebase Studio 中安装扩展程序:
使用 Firebase Studio 中的扩展程序面板发现和安装扩展程序。此方法最适合特定于用户的扩展程序,例如:
- 自定义色彩主题
- 编辑器模拟,例如 VSCodeVim
向
dev.nix
文件添加扩展程序。当您分享工作区配置时,系统会自动安装这些扩展程序。此方法最适合项目专用扩展程序,例如:- 编程语言扩展程序,包括特定于语言的调试程序
- 适用于项目中所用云服务的官方扩展程序
- 代码格式设置工具
对于后一种方法,您可以通过查找完全限定的扩展程序 ID(采用 <publisher>.<id>
的形式)并将其添加到 idx.extensions
对象中,以便在 dev.nix
文件中添加 IDE 扩展程序,如下所示:
{ 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.*
)
- Docker (
- 信息
- Pub/Sub 模拟器 (
services.pubsub.*
)
- Pub/Sub 模拟器 (
- 数据库
- MySQL (
services.mysql.*
) - Postgres (
services.postgres.*
) - Redis (
services.redis.*
) - Spanner (
services.spanner.*
)
- MySQL (
如需详细了解如何在工作区中启用这些服务,请参阅 dev.nix
参考文档的 services.*
部分。
自定义预览
如需详细了解如何自定义应用预览,请参阅预览应用。
设置工作区图标
您可以为工作区选择自定义图标,方法是将名为 icon.png
的 PNG 文件放置在 .idx
目录中,与 dev.nix
文件位于同一级别。然后,Firebase Studio 会在信息中心内使用此图标来表示您的工作区。
由于此文件可以提交到源代码控制系统(例如 Git),因此这是一种很好的方式,可帮助参与项目工作的所有人在使用 Firebase Studio 时看到项目的相同图标。由于该文件可能会因 Git 分支而异,因此您可以使用此图标直观地区分 Beta 版和正式版应用工作区,以及用于其他用途。
将自定义内容转换为模板
如需将您的环境配置转换为任何人都可以用来构建新项目的“起始环境”,请参阅创建自定义模板文档。
探索所有自定义选项
如需详细了解环境配置架构,请参阅 dev.nix
参考文档。