firebase initの初期化でホームディレクトリから変えられなくなったときの対策
こんにちは、ワニかず@40歳 出戻りエンジニアです。
Firebaseで以下のように複数のプロジェクトを作成した状態で
Firebase CLIの「firebase init functions」を実行したときに、
それぞれのプロジェクトでフォルダを分けたいのに、何度やっても
You're about to initialize a Firebase project in this directory:
/Users/xxxxxxxx
Before we get started, keep in mind:
と表示されて、何をやっても
/Users/xxxxxxxx
というホームディレクトリから変えられない現象に遭遇しハマりました。
その時の回避策についてまとめました。
通常は?
# 目的のディレクトリに移動
cd /Users/xxxxxxx/test
# functions ディレクトリに移動して初期化
cd functions
firebase init functions
で、目的のフォルダで初期化処理が実行されるはずなのですが、
他のプロジェクトの初期化の際に、ホームディレクトリで「firebase init functions」を実行してしまった結果、このようなことが起きることが後々判明しました。
ですので、
ホームディレクトリで「firebase init functions」を実行してしまった場合は、傷が浅いうちに、他のフォルダに設定を引っ越ししたほうが良いと思います。(体験談)
回避策
.firebaserc
とfirebase.json
を
「firebase init functions」を実行したいフォルダに作る、
という回避策をとります。
- Project IDを取得する
ターミナルで
firebase projects:list
を実行すると、
┌──────────────────────┬─────────────────────────┬────────────────┬──────────────────────┐
│ Project Display Name │ Project ID │ Project Number │ Resource Location ID │
├──────────────────────┼─────────────────────────┼────────────────┼──────────────────────┤
│ xxxxxx │ ○○○○○○○○○○○○○○○○○ │ 814582607983 │ [Not specified] │
├──────────────────────┼─────────────────────────┼────────────────┼──────────────────────┤
│ △△△△△△ │ □□□□□□□□□□□□□ (current) │ 1077350581572 │ [Not specified] │
└──────────────────────┴─────────────────────────┴───────────────
というような形で表示される
○○○○○○○○○○○○○○○○○
と
□□□□□□□□□□□□□
がProject ID
です。
今回は「□□□□□□□□□□□□□」のプロジェクトを
「firebase init functions」で初期化したいとします。
-
.firebaserc
とfirebase.json
を作成しinit
# 目的のディレクトリに移動
cd /Users/xxxxxxx/test
# .firebaserc ファイルを作成して、プロジェクトを指定
cat > .firebaserc << EOF
{
"projects": {
"default": "□□□□□□□□□□□□□"
}
}
EOF
# firebase.json を作成
cat > firebase.json << EOF
{
"functions": {
"source": "functions"
}
}
EOF
# functions ディレクトリに移動して初期化
cd functions
firebase init functions --project=□□□□□□□□□□□□□
これで、目的のフォルダで初期化ができると思いますが、
複数のプロジェクトを作る際は、処理が煩雑になるので、
ホームディレクトリで「firebase init functions」を実行してしまっていた場合は、
早めに引っ越しをすることをおすすめします。
おしまいに
なんだかんだ、半日近くこの作業に費やしてしまいました。
Discussion