준비
1. web 으로 빌드가능한 flutter app
2. https://console.firebase.google.com/ 에서 web 으로 프로젝트 생성

Firebase CLI 설치
jooyoung@Jooyoungui-MacBookAir namecard % curl -sL https://firebase.tools | bash                    
Password:
-- Checking for existing firebase-tools on PATH...
Your machine has firebase-tools@13.13.3 installed.
If you would like to upgrade your install run: curl -sL firebase.tools | upgrade=true bash

Firebase login
jooyoung@Jooyoungui-MacBookAir namecard % firebase login
Already logged in as hera.jooyoung.lim@gmail.com

Firebase init
jooyoung@Jooyoungui-MacBookAir namecard % firebase init

     ######## #### ########  ######## ########     ###     ######  ########
     ##        ##  ##     ## ##       ##     ##  ##   ##  ##       ##
     ######    ##  ########  ######   ########  #########  ######  ######
     ##        ##  ##    ##  ##       ##     ## ##     ##       ## ##
     ##       #### ##     ## ######## ########  ##     ##  ######  ########

You're about to initialize a Firebase project in this directory: /Users/jooyoung/Documents/UdemyFlutterBasic/namecard

Before we get started, keep in mind:

  * You are initializing within an existing Firebase project directory? 

Hosting 선택  (space는 선택, Enter는 다음)
Which Firebase features do you want to set up for this directory? Press Space to select features, then Enter to confirm your choices. 
Hosting: 
Configure files for Firebase Hosting and (optionally) set up GitHub Action deploys

=== Project Setup

First, let's associate this project directory with a Firebase project.
You can create multiple project aliases by running firebase use --add, 
but for now we'll just set up a default project.

i  Using project jooyoung-lim-name-card (jooyoung-lim-name-card)

=== Hosting Setup

Your public directory is the folder (relative to your project directory) that will contain Hosting assets to be uploaded with firebase deploy. If you
have a build process for your assets, use your build's output directory.

디폴트는 public 이지만 빌드 후 산출물이 build/web 에 나오니깐 그대로 써준다.  그 외는 설정도 하기처럼 해준다.
?What do you want to use as your public directory? build/web
? Configure as a single-page app (rewrite all urls to /index.html)? Yes
? Set up automatic builds and deploys with GitHub? No
? File build/web/index.html already exists. Overwrite? Yes
✔  Wrote build/web/index.html

i  Writing configuration info to firebase.json...
i  Writing project information to .firebaserc...

배포할 앱을 빌드
✔  Firebase initialization complete!
jooyoung@Jooyoungui-MacBookAir namecard % flutter build web

Font asset "CupertinoIcons.ttf" was tree-shaken, reducing it from 257628 to 1172 bytes (99.5% reduction). Tree-shaking can be disabled by providing
the --no-tree-shake-icons flag when building your app.
Font asset "MaterialIcons-Regular.otf" was tree-shaken, reducing it from 1645184 to 8864 bytes (99.5% reduction). Tree-shaking can be disabled by
providing the --no-tree-shake-icons flag when building your app.
Compiling lib/main.dart for the Web...                             16.0s
✓ Built build/web

이제 배포하기
jooyoung@Jooyoungui-MacBookAir namecard % firebase deploy

=== Deploying to 'jooyoung-lim-name-card'...

i  deploying hosting
i  hosting[jooyoung-lim-name-card]: beginning deploy...
i  hosting[jooyoung-lim-name-card]: found 30 files in build/web
✔  hosting[jooyoung-lim-name-card]: file upload complete
i  hosting[jooyoung-lim-name-card]: finalizing version...
✔  hosting[jooyoung-lim-name-card]: version finalized
i  hosting[jooyoung-lim-name-card]: releasing new version...
✔  hosting[jooyoung-lim-name-card]: release complete

✔  Deploy complete!

Project Console: https://console.firebase.google.com/project/jooyoung-lim-name-card/overview
Hosting URL: https://jooyoung-lim-name-card.web.app
jooyoung@Jooyoungui-MacBookAir namecard %

완료!


AND