Use Babel to target the correct execution environment for Cloud Functions for Firebase and use modern languages features (ES6+) to develop.
Here is the accompanying Medium post.
I suggest developing your Cloud Functions in the src/functions/
directory and output everything to a dist/functions/
folder. By using a single root package.json
we remove the need for maintaining and possibly merging two or more for the Functions themselves and other code, like a frontend app.
Use @babel/core
, @babel/cli
and @babel/preset-env
with some npm scripts to compile to the Cloud Functions server runtime of NodeJS v6.11.5. The output directory, dist/functions/
is created on compilation in the deploy step (yarn deploy).
Firebase predeploy scripts are used in the firebase.json
to coordinate which npm scripts get called before deploying to ensure everything is built.
# Clone this dir
curl https://codeload.github.com/jthegedus/blog-code/tar.gz/master | tar -xz --strip=1 blog-code-master/firebase-functions-es6-babel
cd firebase-functions-es6-babel
# Install
yarn
If you're using firebase-tools
globally, then skip to the Deploy to Firebase step.
yarn fblogin
yarn funcs:serve
Try the new experimental Firebase Shell for truly local testing:
yarn funcs:shell
Update .firebaserc
to use your Firebase project id.
yarn funcs:deploy