22

组织所有 Cloud Functions for Firebase 的最佳做法是什么?

我从示例 GitHub 存储库中看到,所有函数都驻留在一个index.js文件中。

我猜对于更大的项目,有更好的方法可以在不同的文件/目录中组织 Cloud Functions for Firebase。

4

4 回答 4

11

我按提供者和资源在一个名为triggers. 例如,auth提供者在哪里user,资源在哪里;该文件夹functions/triggers/auth/user包含一个onCreate.jsand onDelete.js,分别欢迎和清理用户。

+--/auth
|  +--/user
|     +--/onCreate.js
|     +--/onDelete.js
+--/database
+--/storage

require您可以使用以下函数导出特定触发器:

exports.onCreateAuthUser = require('./triggers/auth/user/onCreate');    
exports.onDeleteAuthUser = require('./triggers/auth/user/onDelete');

我更进一步,创建了一个自动为我导出函数的脚本。我将文件的扩展名更改为f.js并递归搜索触发器目录。对于找到的每个文件,函数名称是通过分解目录和文件路径来编造的。

这个结构的灵感来自于检查firebase-functionsnpm 包的内部。

于 2017-11-18T00:15:30.547 回答
1

这是一个很好的问题,也是我最近一直在寻找的东西。我从 Tarik Huber 找到了这个很棒的策略:组织您的 Firebase 云功能。这是他对自己的想法和该领域的其他一些贡献者的看法。

他根据函数的用途和类型(即触发器、Http 等)将函数组织到文件夹结构中。index.js 代码遍历结构并以非常结构化和简洁的方式导入函数。它不仅允许开发人员以易于理解的结构简单地添加新函数,而且不必手动操作 index.js 文件,而且它还根据结构在 Firebase 中部署函数名称。

一定要检查一下。

于 2019-11-04T07:36:42.393 回答
0

export { functionName } from './file'您可以在 index.js 文件中使用类似的东西。

/functions/index.js
// This is the main entry point for the app written in ES that is compatible with node lts
import * as functions from 'firebase-functions';

export { sendWelcomeEmail } from './userEmails';

exports.helloWorld = functions.https.onRequest((request, response) => {
  let helloMsg = `Hello!`;
  response.send(helloMsg);
});
于 2017-11-18T00:01:03.030 回答
0

我创建了一个脚本来复制一个名为 js 的文件夹中的所有 javascript 文件,该文件夹位于 firebase 函数文件夹的根目录中到 index.js。

基本上,脚本只是自动复制文件,在合并所有需要的文件后,就可以像往常一样部署功能。

您可以在此处找到脚本。

注意:阅读所有其他帖子,我发现还有其他方法可以将函数组织在不同的文件中。我制作了这个脚本来解决我的问题,我现在正在我的一个项目中使用它。和大家分享一下,想想其他的技术是不是太复杂了,可以试试这个。

链接:https ://github.com/UnresolvedCold/firebase-merge

于 2020-01-10T17:35:40.823 回答