部署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
相关产品推荐
相关产品推荐

