Firebase CLI で React App を Hosting する
Firebase + ReactのHosting やり方
なぜ?
よく忘れるからドキュメンテーション!
Console of Firebase ( Browser )
Firebase consoleでcreate project
そして真っ先にdatabaseからcloud firestoreを作成する
ここでlocationの選択が出てくる, asia-northeastを選択
また消して作り直す場合は、trash から消えるのを待つ必要があるので
30日同じ名前を使えないので注意。
Terminal
ターミナルで適当なディレクトリを作成して
npm install -g firebase-tools
firebase-tools を install する
npm i firebase ではない
firebase login
これで Chrome が開いてログイン処理できる。
firebase init
TUI設定開始
Firestore, Hositing を選択
use an existing projectを選択
使うプロジェクトを選択する
? What do you want to use as your public directory? public ? Configure as a single-page app (rewrite all urls to /index.html)? Yes ✔ Wrote public/index.html i Writing configuration info to firebase.json... i Writing project information to .firebaserc... i Writing gitignore file to .gitignore... ✔ Firebase initialization complete!
これで init が終わった。
firebase deploy
これでデプロイできる
ソースを見てみる
生成されたソースを見ると、app, auth, database, message, storage,
そして init がローカルな処理?
<script src="/__/firebase/7.14.2/firebase-app.js"></script> <script src="/__/firebase/7.14.2/firebase-auth.js"></script> <script src="/__/firebase/7.14.2/firebase-database.js"></script> <script src="/__/firebase/7.14.2/firebase-messaging.js"></script> <script src="/__/firebase/7.14.2/firebase-storage.js"></script> <!-- initialize the SDK after all desired features are loaded --> <script src="/__/firebase/init.js"></script>
webで見れる.拡張子はnetlifyと同じ.app
ソースを書き換えると反応した
React
これを参考にする
portfolioと言う名のprojectならまずfirebase設定するときに作った
code/portofolio/で npx create react app portfolio
cd portfolio/
親dirにあるpublic/ はindex.htmlしかないからrm -rf
残りを全てmv * ..で持ってくる
package.jsonはfirebaseの方にはないからNO CONFLICT
中の方の node_modules/ は放棄
とりあえずportfolio/ でnpm i (package.jsonのdataからreact動かすため?)
そしてnpm startでlocalでreactが動作する
firebase.jsonのpublic: publicをbuild/に書き換える
そしてnpm run build, firebase deploy
これでbuild先で動く.(https://portfolio0902.web.app/)
Database crud
別の記事に書く
懸念点
spark(free)planでは作成数に上限がある……
PRJを作る度にLimitに近づいているカウントがされていく。
これは既存の適当に乱立したPRJを全て削除してもリセットされない。
削除したprojectが30days立つまで減るのを待つ必要がある.