You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署Cloud Functions时如何保留项目中已有的其他函数?

解决Firebase跨包部署函数时保留远程函数的问题

问题说明

我的Firebase项目有4个云函数:

openDoor(europe-west1)
closeDoor(europe-west1)
openWindow(europe-west1)
closeWindow(europe-west1)

它们分属两个独立的Node包:

  • 第一个包:仅包含openDoor和closeDoor
  • 第二个包:仅包含openWindow和closeWindow

当在第一个包的目录下执行非交互模式的firebase deploy时,会触发错误:

Error: The following functions are found in your project but do not exist in your local source code:
    openWindow(europe-west1)
    closeWindow(europe-west1)

这个错误直接打断了CD部署流程。

现有--force参数会强制删除本地不存在的远程函数,但我需要保留所有已部署的函数。虽然yes N | firebase deploy --interactive能绕开删除操作,但我使用的是Firebase的GitHub Action部署,必须采用原生解决方案。

原生解决办法

1. 部署时指定具体函数

执行部署命令时,通过--only参数明确指定要部署的函数,Firebase CLI就不会检查其他远程函数:

firebase deploy --only functions:openDoor,functions:closeDoor

如果函数在特定区域,也可以加上区域标识:

firebase deploy --only functions:europe-west1.openDoor,functions:europe-west1.closeDoor

2. 用firebase.json配置部署范围

在每个包的firebase.json中配置要部署的函数列表,之后直接执行firebase deploy即可,CLI会按配置只部署指定函数:

{
  "functions": {
    "source": ".",
    "ignore": [
      "node_modules",
      ".git",
      "firebase-debug.log",
      "firebase-debug.*.log"
    ],
    "deploy": {
      "functions": ["openDoor", "closeDoor"]
    }
  }
}

3. 给函数分组部署(推荐)

给不同包的函数设置分组,部署时按分组推送代码:

  • 在函数所在包的package.json中添加分组配置:
{
  "name": "door-functions",
  "firebase": {
    "functions": {
      "group": "doorGroup"
    }
  }
}
  • 部署时直接指定分组:
firebase deploy --only functions:doorGroup

内容的提问来源于stack exchange,提问作者creativecreatorormaybenot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 19:50:47