I organize my event handlers by provider and resource in a folder called triggers
. E.g. where auth
is the provider and user
is the resource; the folder functions/triggers/auth/user
contains an onCreate.js
and onDelete.js
, which welcomes and cleans up a user respectively.
+--/auth
| +--/user
| +--/onCreate.js
| +--/onDelete.js
+--/database
+--/storage
You can export a particular trigger by using the require
function:
exports.onCreateAuthUser = require('./triggers/auth/user/onCreate');
exports.onDeleteAuthUser = require('./triggers/auth/user/onDelete');
I went a step further and created a script that automatically exports the functions for me. I change the extension of the files to f.js
and search recursively the triggers directory. For each file found, the function name is concocted by breaking down the directory and file path.
This structure was inspired by inspecting the internals of the firebase-functions
npm package.