如何在不影响其他功能的情况下将一些功能部署到 Firebase 的 Cloud 函数中?

当我跑的时候

firebase deploy --only functions

它读取 index.js文件并更新从该文件导出的所有函数。如果在以前的部署中有一个名为 a的函数,而在当前的部署中没有这样的函数,那么将删除 a

换句话说,效果与删除所有现有函数后添加当前 index.js文件中的所有函数相同。

是否可以添加/更新/删除单个函数?

55598 次浏览

我是消防员

目前无法使用 FirebaseCLI 部署单个函数。运行“ firebase department”将部署所有功能。

我们最近讨论了部署这些函数的子集,但是目前还没有可用的子集——我们也不能给出它是否/何时可用的大致范围。

更新 因为 Firebase CLI 发布了部署单个函数的功能。

Firebase CLI 工具3.8.0增加了部署特定函数的能力。

firebase deploy --only functions:func1,functions:func2

--only <targets>
only deploy to specified, comma-separated targets (e.g. "hosting,storage"). For functions,
can specify filters with colons to scope function deploys to only those functions (e.g. "--only functions:func1,functions:func2").
When filtering based on export groups (the exported module object keys), use dots to specify group names
(e.g. "--only functions:group1.subgroup1,functions:group2)"

下面的方法可以在不影响其他函数的情况下部署特定的函数,其中 specificFunctionName是我想要部署的函数

firebase deploy --only functions:specificFunctionName

在终端机上快速复制命令:

firebase deploy --only functions:
firebase deploy --only "functions:<fileName>.<functionName>"

示例文件夹结构:

functions
node_modules
index.js
smsNotification.js
...

可以只重新部署文件中的函数

firebase deploy --only "functions:smsNotification.sendChatNotif"

重新部署文件中的所有函数

firebase deploy --only "functions:smsNotification"

如果有人仍然不能使用 firebase deploy --only functions:func1,functions:func2使它工作,这可能是因为您可能在 firebase.json中使用代码库 "codebase": "my-codebase"。我花了一段时间来诊断,但在删除了代码库属性之后,只部署了一些使用 --only标志的函数

直到我尝试了@Sergey Mell 在 他的评论中提到的方法,我才成功地让它工作起来(在 firebase.json 中没有代码库属性) :

firebase deploy --only "functions:func1,functions:func2"

周围的双引号解决了这个问题。