Firebase CLI 참조

Firebase CLI(GitHub)는 Firebase 프로젝트 관리, 조회, 배포를 위한 여러 가지 도구를 제공합니다.

설정

Firebase CLI를 설치하려면 우선 컴퓨터에 Node.js를 설치해야 합니다. Node.js를 설치한 후 다음 명령을 실행하면 npm(Node 패키지 관리자)을 통해 Firebase CLI를 설치할 수 있습니다.

npm install -g firebase-tools

이제 컴퓨터의 모든 터미널 창에서 디렉토리에 관계없이 Firebase 명령을 사용할 수 있습니다. Firebase CLI를 설치했으면 Google 계정으로 로그인합니다.

firebase login

이 명령은 로컬 컴퓨터를 Firebase 계정에 연결하고 프로젝트에 대한 액세스를 허용합니다. 정상적으로 인증되었는지 테스트하려면 firebase list를 실행하여 Firebase 프로젝트 목록이 표시되는지 확인합니다. 이 목록이 Firebase 콘솔에 제시된 프로젝트와 일치해야 합니다.

최신 버전 가져오기

설치 명령을 다시 실행하여 Firebase CLI를 최신 버전으로 유지할 수 있습니다.

npm install -g firebase-tools

프로젝트 디렉토리

CLI가 수행하는 배포 등의 다양한 작업에는 프로젝트 디렉토리가 필요합니다. 프로젝트 디렉토리는 firebase.json 구성 파일이 들어 있는 모든 디렉토리입니다. 프로젝트 디렉토리는 일반적으로 소스 관리 루트와 동일해야 하며, firebase.json은 일반적으로 README 등의 최상위 파일과 나란히 위치합니다.

프로젝트 디렉토리 초기화

새 프로젝트 디렉토리를 초기화하려면 터미널에서 원하는 프로젝트 디렉토리로 이동하고 다음을 실행합니다.

firebase init

사용할 Firebase 기능 지정을 포함하여 프로젝트 디렉토리를 설정하는 과정을 init 명령이 안내합니다. 나중에 언제든지 init을 다시 실행하여 새 기능을 추가할 수 있습니다.

init 명령의 마지막 단계에서는 기본 Firebase 프로젝트를 선택합니다. 이를 통해 프로젝트와 디렉토리를 연결하면 프로젝트 디렉토리에서 firebase deploy 등의 프로젝트별 명령을 실행할 때 올바른 프로젝트가 사용됩니다. 디렉토리 하나에 스테이징 프로젝트, 프로덕션 프로젝트 등 여러 프로젝트를 연결할 수도 있습니다.

배포

Firebase CLI는 Firebase 프로젝트에 대한 코드 및 애셋의 배포를 관리합니다. firebase deploy 명령으로 다음을 배포할 수 있습니다.

  • Firebase 호스팅 사이트의 새 버전
  • 신규 또는 기존 Cloud 함수
  • Firebase 실시간 데이터베이스 규칙
  • Cloud Storage 규칙
  • Cloud Firestore 규칙
  • Cloud Firestore 색인

기본적으로 배포는 프로젝트 디렉토리에 있는 배포 가능한 모든 리소스의 새 출시 버전을 만듭니다. 배포할 프로젝트 디렉토리에는 반드시 firebase.json이 있어야 합니다.

배포 충돌

Firebase 데이터베이스 또는 저장소의 보안 규칙을 배포하면 기존 보안 규칙을 모두 덮어쓰게 됩니다. 즉, 명령줄에서 firebase deploy를 실행하면 Firebase 콘솔에서 변경한 사항이 모두 사라집니다. Firebase 프로젝트 디렉토리에 규칙을 지정하는 경우 Firebase 콘솔에서 규칙을 수정하지 않거나 규칙을 게시한 후 로컬 규칙 사본을 즉시 업데이트해야 합니다.

배포 할당량

매우 드물지만 Firebase 배포 작업의 속도나 양을 제한하는 할당량을 초과할 수도 있습니다. 예를 들어 굉장히 많은 함수를 배포할 때 HTTP 429 할당량 오류 메시지가 표시될 수 있습니다. 이러한 문제를 해결하려면 부분 배포를 하거나 할당량 증가를 요청하세요. 위에 언급된 Cloud 함수 오류와 관련된 사용자별 100초당 쓰기 요청 할당량을 비롯해 Firebase 서비스의 특정 할당량 증가를 요청할 수 있습니다.

롤백

Firebase 호스팅 배포를 롤백하려면 Firebase 콘솔에서 프로젝트의 호스팅 패널로 이동하고 원하는 릴리스에 대해 롤백 작업을 선택합니다. Firebase 데이터베이스 또는 저장소 규칙의 릴리스를 롤백하는 기능은 현재 지원되지 않습니다.

부분 배포

특정 기능만 배포하려면 deploy 명령의 플래그에 쉼표로 구분된 목록을 사용합니다. 예를 들면 다음과 같습니다.

firebase deploy --only hosting

--only 플래그의 유효한 기능은 hosting, functions, database, storage, firestore입니다. 이러한 이름은 firebase.json 구성 파일의 키에 해당합니다.

함수를 배포할 때 특정 함수를 대상으로 지정할 수 있습니다.

firebase deploy --only functions:function1
firebase deploy --only functions:function1,functions:function2

여러 함수를 내보내기 그룹으로 묶어 한 번의 명령으로 여러 함수를 배포할 수도 있습니다. 예를 들어 다음과 같이 functions/index.js 안에 그룹을 정의할 수 있습니다.

var functions = require('firebase-functions');

exports.groupA = {
  function1: functions.https.onRequest(...);
  function2: functions.database.ref('\path').onWrite(...);
}
exports.groupB = require('./groupB);

이 경우 functions/groupB.js는 추가 함수를 포함합니다.

var functions = require('firebase-functions');

exports.function3 = functions.storage.object().onChange(...);
exports.function4 = functions.analytics.event('in_app_purchase').onLog(...);

다음을 실행하여 그룹의 모든 함수를 배포할 수 있습니다.

firebase deploy --only functions:groupA

다음을 실행하여 그룹에 속한 특정 함수를 대상으로 지정할 수 있습니다.

firebase deploy --only functions:groupA.function1,groupB.function4

배포 전 및 배포 후 후크

배포 명령에 셸 스크립트를 연결하여 배포 전 또는 배포 후 작업을 수행할 수 있습니다. 예를 들어 배포 전 스크립트로 TypeScript 코드를 자바스크립트로 변환 컴파일하고, 배포 후 후크를 통해 새 사이트 콘텐츠를 Firebase 호스팅에 배포함을 관리자에게 알릴 수 있습니다.

배포 후크를 설정하려면 프로젝트의 firebase.json 구성 파일에 bash 스크립트를 추가합니다. 파일 안에 짧은 스크립트를 직접 정의할 수도 있고, 프로젝트 디렉토리의 파일을 참조할 수도 있습니다. 예를 들어 다음은 Firebase 호스팅에 대한 배포에 성공했을 때 Slack 메시지를 보내는 배포 후 스크립트의 firebase.json 표현식입니다.

 {
   "hosting":{
     "postdeploy":"./messageSlack.sh 'Just deployed to Firebase Hosting'",
     "public":"public"
   }
 }

프로젝트 디렉토리에 상주하는 messageSlack.sh 스크립트는 다음과 같습니다.

 curl -X POST -H 'Content-type: application/json' --data '{"text":"$1"}'
 \https://<Slack_Webhook_URL>

배포 가능한 hosting, functions, database, storage, firestore 등의 모든 애셋에 대해 firebase.jsonpredeploypostdeploy 후크를 추가할 수 있습니다. 이렇게 하면 해당 배포 명령어로 스크립트가 실행됩니다. 배포 전 후크와 배포 후 후크 모두 스크립트의 표준 출력과 오류 스트림을 터미널에 출력합니다. 다음과 같은 실패 사례를 참고하세요.

  • 배포 전 후크가 정상적으로 완료되지 않으면 배포가 취소됩니다.
  • 이유를 막론하고 배포에 실패하면 배포 후 후크가 트리거되지 않습니다.

환경 변수

배포 전 후크와 배포 후 후크에서 실행되는 스크립트 내에서 다음 환경 변수를 사용할 수 있습니다.

  • $GCLOUD_PROJECT: 활성 프로젝트 ID입니다.
  • $PROJECT_DIR: firebase.json이 포함된 루트 디렉토리입니다.
  • $RESOURCE_DIR: hostingfunctions 스크립트에만 해당합니다. 배포할 호스팅 또는 함수 리소스가 포함된 디렉토리의 위치입니다.

프로젝트 별칭 관리

작업 디렉토리 하나에 여러 Firebase 프로젝트를 연결할 수 있습니다. 예를 들어 스테이징 Firebase 프로젝트, 프로덕션 Firebase 프로젝트를 하나씩 사용할 수 있습니다. 서로 다른 프로젝트 환경을 사용하면 프로덕션으로 배포하기 전에 변경사항을 검증할 수 있습니다. 별칭을 전환하거나 새 별칭을 만들려면 firebase use 명령을 사용합니다.

프로젝트 별칭 추가

firebase init을 실행하는 중에 프로젝트를 선택하면 default라는 별칭이 자동으로 생성됩니다. 새 별칭을 만들려면 다음을 실행합니다.

firebase use --add

이 명령으로 Firebase 프로젝트를 선택하고 별칭을 지정할 수 있습니다. 별칭 정의는 프로젝트 디렉토리 안의 .firebaserc 파일에 기록됩니다.

프로젝트 별칭 사용

프로젝트 디렉토리에 현재 정의된 별칭 목록을 보려면 firebase use를 실행합니다. 별칭을 전환하려면 다음을 실행합니다.

firebase use <alias_or_project_id>

별칭을 사용하면 firebase deploy, firebase data:get 등의 모든 프로젝트별 명령이 현재 사용되는 프로젝트에 대해 실행됩니다. 프로젝트 디렉토리에 정의된 별칭이 하나뿐이면 이 별칭이 자동으로 사용됩니다.

현재의 별칭을 지우려면 firebase use --clear를 실행하고, 특정한 별칭을 삭제하려면 firebase use --unalias <alias>를 실행합니다.

소스 관리 및 프로젝트 별칭

일반적으로 .firebaserc 프로젝트를 소스 관리 시스템에 체크인해야 합니다. 이렇게 하면 팀원들이 공통 프로젝트 별칭을 공유할 수 있습니다. 자신만 사용하는 개발 프로젝트가 있으면 각 명령에 --project 플래그를 전달하거나 별칭을 정의하지 않고 firebase use <project_id>를 실행할 수 있습니다.

오픈소스 프로젝트 또는 시작용 템플릿에서는 일반적으로 .firebaserc 파일을 체크인하지 않습니다.

명령 참조

관리 명령

명령 설명
login Firebase 계정으로 로그인합니다. 웹브라우저에 액세스할 수 있어야 합니다.
logout Firebase CLI에서 로그아웃합니다.
login:ci 비대화형 환경에서 사용할 인증 토큰을 생성합니다.
list 모든 Firebase 프로젝트의 목록을 출력합니다.
use 활성 Firebase 프로젝트를 설정하고 프로젝트 별칭을 관리합니다.
open 브라우저에서 관련 프로젝트 리소스를 빠르게 엽니다.
init 현재 디렉토리에 새 Firebase 프로젝트를 설정합니다. 이 명령은 현재 디렉토리에 firebase.json 구성 파일을 만듭니다.
help CLI 또는 특정 명령에 대한 도움말 정보를 표시합니다.

배포 및 로컬 개발

Firebase 호스팅 사이트를 배포하고 상호작용하는 명령입니다.

명령 설명
deploy Firebase 프로젝트를 배포합니다. firebase.json 구성 및 로컬 프로젝트 폴더가 있어야 합니다.
serve Firebase 호스팅 구성을 사용하여 로컬 웹 서버를 시작합니다. firebase.json이 있어야 합니다.

데이터베이스 명령

명령 설명
database:get 현재 프로젝트의 데이터베이스에서 데이터를 가져와서 JSON으로 표시합니다. 색인 데이터 쿼리를 지원합니다.
database:set 현재 프로젝트의 데이터베이스에서 지정된 위치의 데이터를 모두 대체합니다. 파일, STDIN 또는 명령줄 인수에서 입력을 취합니다.
database:update 현재 프로젝트의 데이터베이스에서 지정된 위치에 부분 업데이트를 수행합니다. 파일, STDIN 또는 명령줄 인수에서 입력을 취합니다.
database:push 현재 프로젝트의 데이터베이스에서 지정된 위치의 목록에 새 데이터를 푸시합니다. 파일, STDIN 또는 명령줄 인수에서 입력을 취합니다.
database:remove 현재 프로젝트의 데이터베이스에서 지정된 위치의 데이터를 모두 삭제합니다.
database:profile 프로젝트의 데이터베이스에 대한 작업 프로필을 작성합니다. 작업에 대한 자세한 내용은 실시간 데이터베이스 프로필을 참조하세요.

호스팅 명령

명령 설명
hosting:disable 활성 프로젝트에서 Firebase 호스팅 트래픽 제공을 중지합니다. 이 명령을 실행하면 프로젝트의 호스팅 URL에서 '사이트를 찾을 수 없습니다' 메시지를 표시합니다.

Cloud Firestore 명령어

명령어 설명
firestore:delete Cloud Firestore에서 문서를 삭제합니다. Firebase CLI로 재귀 삭제를 사용하여 컬렉션에서 모든 문서를 삭제할 수 있습니다.

Cloud 함수 명령어

명령 설명
functions:log 배포된 Cloud 함수에서 로그를 읽습니다.
functions:config:set 현재 프로젝트의 Cloud 함수에 대한 런타임 구성 값을 저장합니다.
functions:config:get 현재 프로젝트의 Cloud 함수에 대한 기존 구성 값을 검색합니다.
functions:config:unset 현재 프로젝트의 런타임 구성에서 값을 삭제합니다.
functions:config:clone 프로젝트 환경에서 런타임 구성을 복사해서 다른 환경에 붙여넣습니다.

자세한 내용은 환경 구성을 참조하세요.

사용자 관리 명령

명령 설명
auth:import 사용자 계정을 파일에서 활성 프로젝트로 가져옵니다. 자세한 내용은 auth:import 및 auth:export 페이지를 참조하세요.
auth:export 활성 프로젝트의 사용자 계정을 JSON 또는 CSV 파일로 내보냅니다. 자세한 내용은 auth:import 및 auth:export 페이지를 참조하세요.

다음에 대한 의견 보내기...

도움이 필요하시나요? 지원 페이지를 방문하세요.