-
Notifications
You must be signed in to change notification settings - Fork 0
Deploy with Firebase
Firebase is a Google Backend as a Service (BaaS) provider which makes deploying JavaScript projects easy and free-until-you-get-big.
📹🔥 Thanks to Fireship for providing informative tutorials on YouTube. The Fireship tutorial for Firebase will get you setup not only with static hosting, but also user authentication with Google, a NoSQL database, and database rules.
However, if you are only interested in hosting static files, then here are the main steps needed for hosting and deployment.
🔗 Link to the Firebase console
You will need to add Firebase scripts to your HTML document.
- Create a new project on the console.
- Choose whether you want Google Analytics.
- On the "Get started by adding Firebase to your app", select the "Web" button,
</>. - Name your app and click "Next".
- Copy-paste the "Add Firebase SDK" code into the
/public/index.htmlfile "into the bottom of your<body>tag, but before you use any Firebase services"
- Install firebase-tools globally.
npm install -g firebase-tools - Check firebase was installed.
firebase --version - Login to your Firebase account.
firebase login - You will be redirected to login to your Google account.
- Logout of your Firebase account if needed.
firebase logout - Initiate a Firebase project in your VSCode workspace.
firebase init - You will have to answer a number of questions about your project. Enable specific options with the
space baror pressEnterto accept defaults - Some tricky steps:
-
For which GitHub repository would you like to set up a GitHub workflow?- Enter your GitHub repo in username/repo-name format:
yourUsername/js-babel-firebase
- Enter your GitHub repo in username/repo-name format:
-
Set up the workflow to run a build script before every deploy?- Select Yes.
-
What script should be run before every deploy?- Press
Enterto select the default.
- Press
-
Set up automatic deployment to your site's live channel when a PR is merged?- Press
Enter. You can always delete the files and repository secret that this step creates.
- Press
- This setup will generate new files in your repository:
firebase.jsonand.firebaserc. It will also generate two YAML files under the.githubfolders. - If you are using emulators for hosting, then you can start the preview with
firebase emulators:start - Alternatively, you can use the
firebase servecommand. - Deploy your app to Firebase.
firebase deploy
The Firebase initiation step will have created some new files in your repository.
- Workflow documents in a
.githubfolder, which are in YAML format. - A
firebase.jsonfile, which rememberes all the options that you selected duringfirebase init. - A
.firebasercfile, which remembers which project ID with which the repository is associated.
Here is an example of how this document will look. Please take note of the default run step: npm ci && npm run build, which first installs node_modules, and then runs the build command specified in the package.json file.
By default, this project will run babel src --out-dir public as the build step.
jobs:
build_and_preview:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- run: npm ci && npm run build
- uses: FirebaseExtended/action-hosting-deploy@v0
with:
repoToken: "${{ secrets.GITHUB_TOKEN }}"
firebaseServiceAccount: "${{ secrets.FIREBASE_SERVICE_ACCOUNT_APP_NAME }}"
projectId: app-name
env:
FIREBASE_CLI_PREVIEWS: hostingchannelsNote about npm ci vs npm i:
This command is similar to npm install, except it's meant to be used in automated environments such as test platforms
Source: npmjs.com
If you also need to build LESS or SASS, you can install the dependencies, then add them to your build command in package.json.
- Home page for the official Firebase documentation
- Firebase web setup documentation