😊

肥大化しがちなFirebase Cloud Functionsのファイルを整理する

2021/12/14に公開

肥大化するindex.js

cloud functionsの処理をfunctions/index.jsに書き込んでいくと、いつの間にか膨大なサイズになっていることがあります。これらを整理して管理コストを下げたい。

グループ関数

公式のドキュメントにもあるとおり、グループ関数を使うと機能ごとにfunctionsをまとめられデプロイも容易になります。

functions/index.js
exports.user = require('./user')
exports.post = require('./post')
functions/user.js
const functions = require('firebase-functions')

exports.someFunctionA = functions
  .region(REGION)
  .firestore.document('users/{userId}')
  .onCreate(async (snap, context) => {
    // ...
  })

exports.someFunctionB = functions
  .region(REGION)
  .storage.bucket(SOME_BUCKET)
  .object()
  .onFinalize(async (object) => {
    // ...
  })

このように機能ごとにファイルを分けて記述できます。このサンプルコードだとuserpostがグループ名が接頭辞として使われます(例: user-someFunctionA)
グループごとや個別にデプロイすることも可能で便利です。

yarn firebase deploy --only functions:user
yarn firebase deploy --only functions:user-someFunctionA

Discussion