2022-02-10

React(Typescript)+Redux+Firebaseでチャットアプリを作ってみたメモである。

blogimg

手順を忘れないように、忘却の空とその彼方へ花束を


パッケージ管理はYarnを使う。
CSSフレームワークにはTailwind CSSを利用。

大まかな流れ↓

create react appコマンドでReact+Typescriptプロジェクトを作成する。
Tailwind CSS導入する
Eslint,Prettierの設定

create react appコマンドでReact+Typescriptプロジェクトを作成する。


❯ node -v
v16.13.0

~
❯ yarn -v
1.22.17

~
❯ npx create-react-app --version
5.0.0

~
❯ npx create-react-app realtime-db-react --template typescript


memo:
yarnがローカルにインストールされているときはパッケージマネージャーにYarnが使われる。
https://zenn.dev/ryuu/articles/force-npm-with-cra

Eslint,Prettierの設定


https://zenn.dev/jpnasane/articles/d7f44682b74fdc

~/Project/React/react-chatapp master* 22s
❯ yarn run eslint --init




設定はこんな感じ。

Typescript用のパッケージインストール

yarn add -D @typescript-eslint/eslint-plugin @typescript-eslint/parser



Airbnbの細かい設定をしてくれるやつをインストール

~/Project/React/react-chatapp master* 22s
❯ npx install-peerdeps --dev eslint-config-airbnb

...(略)
SUCCESS eslint-config-airbnb
  and its peerDeps were installed successfully.


Prettierのパッケージをインストール。

yarn add -D prettier eslint-config-prettier


Tailwind CSS導入する


~
❯ yarn add tailwindcss@npm:@tailwindcss/postcss7-compat @tailwindcss/postcss7-compat postcss@^7 autoprefixer@^9


これやると、

zsh: no matches found: postcss@^7


が出た。

解決方法

create react appコマンドで作成したプロジェクトはwebpackの設定をオーバーライドできない。つまり、PostCSSの設定を上書きできない。
→cracoをインストールする。

yarn add @craco/craco


package.jsonファイル内のスクリプトでcracoを利用するように変更

{
    // ...
    "scripts": {
     "start": "craco start",
     "build": "craco build",
     "test": "craco test",
     "eject": "react-scripts eject"
    },
  }


これでyarn startしてみると、、

UnhandledPromiseRejectionWarning: TypeError: match.loader.options.plugins is not a function


的なエラーが出る。

解決方法

craco.config.js内にある

postcssの記述をpostcssOptionsに変える。

これで
yarn startでプロジェクト立ち上がる。

次はtailwind CSSの設定

~
❯ npx tailwindcss init


して、tailwind.config.jsで

purge: ['./src/**/*.{js,jsx,ts,tsx}', './public/index.html'],


とする。

index.cssに

@tailwind base;
@tailwind components;
@tailwind utilities;


を追加。

firebase関連


firebase login

~
❯ firebase login
Already logged in as amahaya0831@gmail.com


すでにログイン済み。

コンソールでプロジェクト作って、webアプリを作成。
Realtime Databaseを作成。


プロジェクト配下で

firebase init


とりま、Realtime Datebase....

のところだけチェックすればok。

database.rules.jsonで全部trueにしておく。
→ のちfirebase deployで設定を反映させる必要あり

firebaseのsdkを利用するため、

yarn add firebase
yarn add @types/firebase


で、envファイル作成して設定値を埋める。

Redux導入


~/Project/React/react-chatapp main
❯ yarn add redux react-redux @types/react-redux redux-thunk @types/redux-thunk reselect @types/reselect