😊
肥大化しがちなFirebase Cloud Functionsのファイルを整理する
肥大化する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) => {
// ...
})
このように機能ごとにファイルを分けて記述できます。このサンプルコードだとuser
やpost
がグループ名が接頭辞として使われます(例: user-someFunctionA
)
グループごとや個別にデプロイすることも可能で便利です。
yarn firebase deploy --only functions:user
yarn firebase deploy --only functions:user-someFunctionA
Discussion