关于 Firebase CLI
Firebase CLI 提供了从终端管理 Firebase 项目的完整工具集。支持初始化项目、运行本地模拟器、部署 Hosting 和 Cloud Functions,以及管理 Firestore 和其他服务。
主要功能
- 01初始化 Firebase 项目并关联现有项目
- 02本地运行模拟器进行 Firestore、Functions 和其他服务的开发测试
- 03将应用部署到 Firebase Hosting 和 Cloud Functions
- 04查看部署日志和项目配置
适用场景
- 01设置和配置新的 Firebase 后端项目
- 02在本地开发和测试云函数与数据库逻辑
- 03自动化和部署 Hosting 更新和 serverless 函数
安装
选择你的系统或包管理器,复制命令到终端运行。
安装完成后运行firebase --version确认安装成功。
命令示例
常用命令按使用顺序排列。
详细介绍
Firebase CLI 和 MCP 服务

Firebase 命令行界面(CLI)工具可用于通过命令行测试、管理和部署 Firebase 项目。本仓库也是官方 Firebase MCP 服务的所在地。有关更多信息,请参阅 Firebase MCP 服务文档。
- 将代码和资源部署到 Firebase 项目
- 为 Firebase Hosting 网站运行本地 Web 服务器
- 与 Firebase 数据库中的数据交互
- 将用户导入 Firebase Auth 或从中导出用户
如需开始使用 Firebase CLI,请阅读下方的完整命令列表,或查看文档。
提示
正在使用 AI 助手?安装 Firebase Agent 技能,为其提供 Firebase 专属知识、最佳实践和工作流,包括如何有效使用 Firebase CLI 和 MCP 服务:
npx skills add firebase/agent-skills如需了解更多信息,请参阅 Firebase Agent 技能文档。
安装
Node Package
你可以使用 npm(Node Package Manager,Node 包管理器)安装 Firebase CLI。请注意,你需要安装 Node.js 和 npm。安装 Node.js 时也应会一并安装 npm。
运行以下命令下载并安装 Firebase CLI:
npm install -g firebase-tools
这将提供可全局访问的 firebase 命令。
独立二进制文件
Firebase CLI 的独立二进制发行版允许你下载 firebase 可执行文件,
且无需任何依赖项。
运行以下命令下载并安装 CLI:
curl -sL firebase.tools | bash
命令
命令 firebase --help 会列出可用命令,而 firebase <command> --help 会显示某个命令的更多详细信息。
如果某个命令针对特定项目,你必须位于具有有效项目别名的项目目录中,
或者使用 -P <project_id> 标志指定 Firebase 项目 ID。
以下简要列出了可用命令及其功能:
配置命令
| 命令 | 描述 |
|---|---|
| login | 登录 Firebase 账号。需要使用 Web 浏览器。 |
| logout | 退出 Firebase CLI。 |
| login:ci | 生成用于非交互式环境的身份验证令牌。 |
| login:add | 为 CLI 授权另一个账号。 |
| login:list | 列出已授权的 CLI 账号。 |
| login:use | 设置此项目要使用的默认账号 |
| use | 设置当前 Firebase 项目并管理项目别名。 |
| open | 快速在浏览器中打开相关项目资源。 |
| init | 在当前目录中设置一个新的 Firebase 项目。此命令会在当前目录中创建一个 firebase.json 配置文件。 |
| help | 显示 CLI 或特定命令的帮助信息。 |
在 login 命令后附加 --no-localhost(即 firebase login --no-localhost),即可复制并粘贴代码,而不是启动本地服务进行身份验证。例如,你通过 SSH 登录某个实例,并需要在该机器上向 Firebase 进行身份验证时,就可以使用此选项。
项目管理命令
| 命令 | 描述 |
|---|---|
| apps:create | 在项目中创建新的 Firebase 应用。 |
| apps:list | 列出 Firebase 项目中已注册的应用。 |
| apps:sdkconfig | 输出 Firebase 应用的配置。 |
| projects:addfirebase | 将 Firebase 资源添加到 Google Cloud Platform 项目。 |
| projects:create | 创建新的 Firebase 项目。 |
| projects:list | 输出所有 Firebase 项目的列表。 |
部署和本地模拟
这些命令可用于部署和交互 Firebase 服务。
| 命令 | 描述 |
|---|---|
| emulators:exec | 启动本地 Firebase 模拟器,运行测试脚本,然后关闭模拟器。 |
| emulators:start | 启动本地 Firebase 模拟器。 |
| deploy | 部署 Firebase 项目。依赖 firebase.json 配置和本地项目文件夹。 |
| serve | 使用 Firebase Hosting 配置和由 HTTPS 触发的 Cloud Functions 启动本地服务。依赖 firebase.json。 |
| setup:emulators:database | 下载数据库模拟器。 |
| setup:emulators:firestore | 下载 firestore 模拟器。 |
App Distribution 命令
| 命令 | 描述 |
|---|---|
| appdistribution:distribute | 上传发布二进制文件,并可选择将其分发给测试人员和运行自动化测试。 |
| appdistribution:testers:list | 列出项目中的测试人员。 |
| appdistribution:testers:add | 将测试人员添加到项目(以及通过标志指定的群组)。 |
| appdistribution:testers:remove | 从项目(或通过标志指定的群组)中移除测试人员。 |
| appdistribution:groups:list | 列出群组(测试人员群组)。 |
| appdistribution:groups:create | 创建群组(测试人员群组)。 |
| appdistribution:groups:delete | 删除群组(测试人员群组)。 |
| appdistribution:testcases:export | 将测试用例导出为 YAML 文件。 |
| appdistribution:testcases:import | 从 YAML 文件导入测试用例。 |
详细文档请参阅此处。
实时数据库命令
| 命令 | 描述 |
|---|---|
| database:get | 从当前项目的数据库中获取数据,并以 JSON 格式显示。支持查询已编入索引的数据。 |
| database:set | 替换当前项目数据库中指定位置的所有数据。输入可来自文件、STDIN 或命令行参数。 |
| database:push | 向当前项目数据库中指定位置的列表添加新数据。输入可来自文件、STDIN 或命令行参数。 |
| database:remove | 删除当前项目数据库中指定位置的所有数据。 |
| database:update | 对当前项目数据库中指定位置的数据执行部分更新。输入可来自文件、STDIN 或命令行参数。 |
| database:profile | 对数据库使用情况进行分析并生成报告。 |
| database:instances:create | 创建一个实时数据库实例。 |
| database:instances:list | 列出实时数据库实例。 |
| database:settings:get | 读取路径处的实时数据库设置 |
| database:settings:set | 设置路径处的实时数据库设置。 |
扩展命令
| 命令 | 描述 |
|---|---|
| ext | 显示有关如何使用 ext 命令以及项目中已安装扩展的信息。 |
| ext:configure | 配置现有扩展实例。 |
| ext:info | 按名称显示扩展信息(指定版本时使用 [email protected]) |
| ext:install | 安装扩展。 |
| ext:sdk:install | 安装扩展的 SDK,以便在 functions 代码库中定义该扩展。 |
| ext:list | 列出 Firebase 项目中已安装的所有扩展。 |
| ext:uninstall | 根据实例 ID 卸载 Firebase 项目中已安装的扩展。 |
| ext:update | 将现有扩展实例更新到最新版本。 |
Cloud Firestore 命令
| 命令 | 描述 |
|---|---|
| firestore:delete | 从当前项目的数据库中删除文档或集合。支持递归删除子集合。 |
| firestore:indexes | 列出当前项目中部署的所有索引。 |
Cloud Functions 命令
| 命令 | 描述 |
|---|---|
| functions:log | 读取已部署的 Cloud Functions 日志。 |
| functions:list | 列出 Firebase 项目中所有已部署的函数。 |
| functions:config:set | 存储当前项目 Cloud Functions 的运行时配置值。 |
| functions:config:get | 获取当前项目 Cloud Functions 的现有配置值。 |
| functions:config:unset | 从当前项目的运行时配置中移除值。 |
| functions:config:clone | 将运行时配置从一个项目环境复制到另一个项目环境。 |
| functions:secrets:set | 创建或更新供 Cloud Functions for Firebase 使用的密钥。 |
| functions:secrets:get | 获取密钥及其版本的元数据。 |
| functions:secrets:access | 根据密钥及其版本访问密钥值。默认访问最新版本。 |
| functions:secrets:prune | 删除未使用的密钥。 |
| functions:secrets:destroy | 删除密钥。默认删除最新版本。 |
| functions:delete | 按名称或组名称删除一个或多个 Cloud Functions。 |
| functions:shell | 在本地模拟函数并启动 Node.js shell,以便使用测试数据调用这些本地函数。 |
Hosting 命令
| 命令 | 描述 |
|---|---|
| hosting:disable | 停止为当前项目提供 Firebase Hosting 流量。运行此命令后,项目的 Hosting URL 将显示“找不到站点”消息。 |
Remote Config 命令
| 命令 | 描述 |
|---|---|
| remoteconfig:get | 获取 Firebase 项目的 Remote Config 模板。 |
| remoteconfig:versions:list | 获取最近发布的 Firebase Remote Config 模板版本列表。 |
| remoteconfig:rollback | 将项目已发布的 Remote Config 模板回滚到 --version_number 标志指定的版本。 |
| remoteconfig:experiments:get | 获取 Remote Config 实验。 |
| remoteconfig:experiments:list | 获取 Remote Config 实验列表。 |
| remoteconfig:experiments:delete | 删除 Remote Config 实验。 |
| remoteconfig:rollouts:get | 获取 Remote Config 推出配置。 |
| remoteconfig:rollouts:list | 获取 Remote Config 推出配置列表。 |
| remoteconfig:rollouts:delete | 删除 Remote Config 推出配置。 |
使用 firebase:deploy --only remoteconfig 更新并发布项目的 Firebase Remote Config 模板。
身份验证
通用
Firebase CLI 可以使用以下四种身份验证方式,按优先级从高到低排列:
- 用户令牌 - 已弃用:此身份验证方式将在未来的
firebase-tools主版本中移除;请改用服务账号进行身份验证 - 提供通过firebase login:ci生成的显式长期 Firebase 用户令牌。请注意,这些令牌是极其敏感的长期凭据,并不适用于大多数情况。建议改用服务账号授权。可以通过以下两种方式之一设置令牌:- 在任何命令中设置
--token标志,例如firebase --token="<token>" projects:list。 - 设置
FIREBASE_TOKEN环境变量。
- 在任何命令中设置
- 本地登录 - 运行
firebase login,以自己的身份直接登录 CLI。CLI 会在你的计算机上缓存已授权的用户凭据。 - 服务账号 - 设置
GOOGLE_APPLICATION_CREDENTIALS环境变量,使其指向 JSON 服务账号密钥文件的路径。更多详情请参阅 Google Cloud 的身份验证入门指南。 - 应用默认凭据 - 如果你使用
gcloudCLI,并通过gcloud auth application-default login登录,那么只要以上凭据均不存在,Firebase CLI 就会使用这些凭据。
多个账号
默认情况下,firebase login 会设置一个全局账号,供所有项目使用。
如果你有多个用于 Firebase 项目的 Google 账号,可以授权多个账号,并按项目或命令分别使用。
若要授权其他账号以供 CLI 使用,请运行 firebase login:add。
你可以使用 firebase login:list 查看已授权账号列表。
若要为特定 Firebase 项目目录设置默认账号,请在该目录中运行
firebase login:use,然后选择所需账号。
若要查看某个目录的默认账号,请运行 firebase login:list,当前上下文的
默认账号会列在首位。
若要为某次命令调用设置账号,请在任意命令中使用 --account 标志。
例如:firebase [email protected] deploy。指定的账号必须已通过
firebase login:add 添加到 Firebase CLI。
Cloud Functions 模拟器
Cloud Functions 模拟器通过 emulators:start、
serve 和 functions:shell 等命令运行。模拟的 Cloud Functions 会作为独立的 node 进程
在你的开发机器上运行,这意味着它们有自己的凭据发现机制。
默认情况下,这些 node 进程无法发现通过 firebase login 登录的凭据。
为了提供更好的开发体验,当你通过 firebase login 登录 CLI 后,
我们会获取用户凭据并构建临时凭据,然后通过 GOOGLE_APPLICATION_CREDENTIALS 将其传递给模拟器。只有在你尚未自行设置
GOOGLE_APPLICATION_CREDENTIALS 环境变量时,我们才会这样做。
在代理后使用
CLI 支持通过环境变量设置 HTTP(S) 代理。若要使用代理,请将环境中的 HTTPS_PROXY
或 HTTP_PROXY 值设为代理 URL(例如:
HTTP_PROXY=http://127.0.0.1:12345)。
在 CI 系统中使用
Firebase CLI 需要浏览器来完成身份验证,但完全兼容 CI 和其他无头环境。
按照以下步骤在 CI 环境中运行 Firebase 命令。每个步骤的详细说明请参阅 Google Cloud 的身份验证入门指南。
- 创建服务账号,并授予其对项目的适当访问权限。
- 为该服务账号创建服务账号密钥(JSON 文件)。
- 在 CI 系统中以安全且可访问的方式存储密钥文件。
- 在 CI 系统中运行 Firebase 命令时,设置
GOOGLE_APPLICATION_CREDENTIALS=/path/to/key.json。
若要禁用服务账号的访问权限,请在 Google Cloud Console 中找到项目对应的服务账号,然后移除密钥,或停用或删除该服务账号。
作为模块使用
Firebase CLI 也可以作为标准 Node 模块以编程方式使用。 每个命令都作为一个函数提供,该函数接受位置参数,后跟一个选项对象,并返回一个 Promise。
例如,在命令行中运行以下命令:
$ firebase --project="foo" apps:list ANDROID
对应的 Node 写法如下:
const client = require("firebase-tools");
client.apps
.list("ANDROID", { project: "foo" })
.then((data) => {
// ...
})
.catch((err) => {
// ...
});
选项对象必须是最后一个参数,任何未指定的位置参数都会使用默认值 ""。以下
两种调用方式等效:
const client = require("firebase-tools");
// #1 - No arguments or options, defaults will be inferred
client.apps.list();
// #2 - Explicitly provide "" for all arguments and {} for options
client.apps.list("", {});
注意:在 Cloud Functions 等受限环境中使用时,并非所有 firebase-tools 命令都能以编程方式运行,
因为它们需要访问本地文件系统。