Cloud Functions for Firebase、デプロイ周りでのメモ
Cloud Functions for Firebaseでも、デプロイするファイルをignoreできる
公式ドキュメントに記載されていないが、Cloud Functions for FirebaseでもFirebase Hostingと同様にデプロイしたくないファイルを除外できる。firebase.jsonのfunctions.ignoreに、hosting.ignoreと同じフォーマットで指定すればOK。
なお、functions.ignoreを指定しない場合はnode_modulesが常に除外される。firebase-debug.logはどのような場合も除外される。
以下、firebase.jsonの記入例。
{
"functions": {
"source": "functions",
"ignore": [
"node_modules",
".eslintignore",
".eslintrc.json",
"tsconfig.json",
".gitignore"
],
}
参考サイト: (github, 2019) firebase.json 'functions.ignore' bloats package upload #1602
Mac M1 CPU環境だと、デプロイに使用するnode.jsのバージョンは14以下でないといけない
Mac M1 CPU環境において、node.jsのバージョン15以上を使うとデプロイに失敗する。内部的にdeflateしたソースコードをリモートでinflateするときに解凍に失敗している(bad CRCになる)ことが理由。
代わりに、node.jsのバージョンが14以下であればデプロイに成功する。
そのため、nvmもしくはnodebrewでバージョン14以下のnode.jsをインストールする。
nodebrew
バージョン14以下でarm64アーキテクチャ向けにビルドされたnodeは無いので、単にnodebrew install v14.15.4
としてもエラーになる。
Can not fetch: https://nodejs.org/dist/v14.15.4/node-v14.15.4-darwin-arm64.tar.gz
nodebrewではターミナルのCPUアーキテクチャに応じてインストールするアーキテクチャを選ぶので、arch -x86_64 nodebrew install v14.15.4
などとすることでx86_64版のnode v14.15.4をインストールできる。
nvm
そのままnvm install v14.15.4
とすることでx86_64版のnode v14.15.4をインストールできる。
参考サイト: (Stack Overflow, 2021) Firebase Functions deploy requires keyboard input in GCP