为Firebase组织云功能

时间:2017-03-22 17:27:03

标签: firebase google-cloud-functions firebase-cloud-functions

为Firebase组织所有Cloud功能的最佳做法是什么?

我从sample GitHub repository看到所有功能都存在于一个index.js文件中。

我想更大的项目是有更好的方法在不同的文件/目录中组织Firebase的Cloud Functions。

4 个答案:

答案 0 :(得分:6)

我按照提供程序和资源在名为triggers的文件夹中组织我的事件处理程序。例如。其中auth是提供者,user是资源;文件夹functions/triggers/auth/user包含onCreate.jsonDelete.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-functions npm包的内部结构。

答案 1 :(得分:0)

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

/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);
});

答案 2 :(得分:0)

这是一个很好的问题,也是我最近一直在寻找的东西。我从塔里克·胡伯(Tarik Huber)找到了一个伟大的策略:Organizing your Firebase Cloud Functions。这是他对自己的想法以及该领域其他一些贡献者的看法。

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

一定要检查一下。

答案 3 :(得分:0)

我创建了一个脚本,用于将Firebase函数文件夹根目录中名为js的文件夹中存在的所有JavaScript文件复制到index.js。

基本上,该脚本只是自动执行文件的复制。合并所有必需的文件后,便可以照常部署功能了。

您可以找到脚本here

注意:阅读所有其他文章,我发现还有其他方法可以将功能组织到不同的文件中。我制作了此脚本来解决我的问题,并且像现在一样,在我的一个项目中使用了它。与大家分享,考虑其他技术似乎太复杂了,您可以尝试一下。

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