created: 2020-12-25T09:53:17.000Z

create-react-app と firebase の環境構築

公式で案内されている手順だと先にCRAをやることになる。

CRA

$ npx create-react-app . --typescript --use-npm

Firebaseのconsoleでいろいろ操作

先にいろいろつくらないと firebase init がコケる

  • プロジェクトの作成
  • リージョンの設定
  • Functionsを使うならクレカを登録
  • FireStoreを使うならデータベースを作成

firebase init

$ firebase login
$ firebaee init

その他

"public": "build"

CRAがデフォルトでbuild配下に静的ファイルを吐き出すので、firebaseが参照する静的ファイルのディレクトリを{public => build}と変更

diff --git a/firebase.json b/firebase.json
index 66b75cd..a84a947 100644
--- a/firebase.json
+++ b/firebase.json
@@ -10,7 +10,7 @@
     ]
   },
   "hosting": {
-    "public": "",
+    "public": "build",
     "ignore": [
       "firebase.json",
       "**/.*",

root: true

CRAのeslintの設定がfunctions配下のeslintの設定とぶつかるので、functions配下のeslintの設定に root: true を追加。eslintが親ディレクトリ(CRA側)の設定をみないように。

diff --git a/functions/.eslintrc.js b/functions/.eslintrc.js
index 821e48b..9735185 100644
--- a/functions/.eslintrc.js
+++ b/functions/.eslintrc.js
@@ -14,10 +14,8 @@ module.exports = {
     project: "tsconfig.json",
     sourceType: "module",
   },
-  plugins: [
-    "@typescript-eslint",
-    "import",
-  ],
+  root: true,
+  plugins: ["@typescript-eslint", "import"],

あとは .gitignore

--- a/.gitignore
+++ b/.gitignore
@@ -23,3 +23,4 @@ yarn-debug.log*
 yarn-error.log*

 .eslintcach
+.firebase