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

Firebase 프로젝트 초기화

Firebase 프로젝트에 배포와 같이 CLI를 사용하여 수행되는 많은 공통 작업에는 프로젝트 디렉토리가 필요합니다. 프로젝트 디렉토리는 firebase init 명령을 사용하여 설정합니다. 프로젝트 디렉토리는 일반적으로 소스 제어 루트와 동일하며 firebase init 실행 후 디렉토리에 firebase.json 구성 파일이 포함됩니다.

새로운 Firebase 프로젝트를 초기화하려면 앱 디렉토리 내에서 다음 명령을 실행합니다.

firebase init

firebase init 명령은 원하는 Firebase 서비스 선택 요청 후 선택된 서비스에 대한 특정 파일 구성을 포함하여 프로젝트 디렉토리 설정을 단계별로 안내합니다. 나중에 다른 Firebase 서비스를 추가하려면 firebase init만 다시 실행합니다.

초기화 프로세스에서는 또한 기본 Firebase 프로젝트를 선택해야 합니다. 이 단계에서는 프로젝트 관련 명령(예: firebase deploy)이 적합한 Firebase 프로젝트에 대해 실행되도록 현재 프로젝트 디렉토리를 Firebase 프로젝트와 연결합니다. 또한 동일한 프로젝트 디렉토리를 여러 Firebase 프로젝트(예: 스테이징 프로젝트와 프로덕션 프로젝트)와 연결할 수도 있습니다.

firebase.json 파일

firebase init 명령어를 실행하면 프로젝트 디렉토리의 루트에 firebase.json 구성 파일이 생성됩니다

애셋을 Firebase CLI에 배포하려면 Firebase 프로젝트에 배포되는 프로젝트 디렉토리의 파일 및 설정을 지정하는 firebase.json 파일이 필요합니다. 프로젝트 디렉토리 또는 Firebase 콘솔에서 일부 설정을 정의할 수 있으므로, 잠재적인 배포 충돌이 해결되었는지 확인하세요.

대부분의 Firebase 호스팅 옵션 구성firebase.json 파일에서 직접 수행할 수 있습니다. 하지만 Firebase CLI로 배포할 수 있는 다른 Firebase 서비스의 경우 firebase init 명령은 해당 서비스의 설정을 정의할 수 있는 특정 파일을 만듭니다(예: Cloud Functions의 index.js 파일). 또한 firebase.json 파일에서 배포 전 또는 배포 후 후크를 설정할 수 있습니다.

다음은 초기화 중 Firebase 호스팅, Cloud Firestore, Firebase용 Cloud Functions를 선택한 경우 기본 설정이 포함된 예시용 firebase.json 파일입니다.

{
  "hosting": {
    "public": "public",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ]
  },
  "firestore": {
    "rules": "firestore.rules",
    "indexes": "firestore.indexes.json"
  },
  "functions": {
    "predeploy": [
      "npm --prefix \"$RESOURCE_DIR\" run lint"
    ]
  }
}

Firebase 프로젝트를 로컬로 제공 및 테스트

프로덕션에 배포하기 전 로컬로 호스팅된 URL에서 Firebase 프로젝트를 보고 테스트할 수 있습니다. 특정 기능만 테스트하려면 firebase serve 명령에서 플래그에 쉼표로 구분된 목록을 사용할 수 있습니다.

로컬 HTTP 함수를 사용하여 프로젝트를 에뮬레이션하려면 프로젝트 디렉토리에서 다음 명령을 실행합니다.

  • 로컬 URL에서 테스트하기 위해 HTTP 함수 및 호스팅을 에뮬레이션하려면 다음 명령을 사용합니다.

    firebase serve
    firebase serve --only functions,hosting // uses a flag
  • HTTP 함수만 에뮬레이션하려면 다음 명령을 사용합니다.

    firebase serve --only functions

다음 중 하나에 해당하면 프로젝트 디렉토리에서 아래 명령을 실행합니다.

firebase serve --only hosting

Firebase 프로젝트에 배포

Firebase CLI는 다음을 포함하여 Firebase 프로젝트에 대한 코드 및 애셋 배포를 관리합니다.

  • Firebase 호스팅 사이트의 새 버전
  • Firebase용 새로운, 업데이트된 또는 기존 Cloud Functions
  • Firebase 실시간 데이터베이스 규칙
  • Firebase용 Cloud Storage 규칙
  • Cloud Firestore 규칙
  • Cloud Firestore 색인

Firebase 프로젝트에 배포하려면 프로젝트 디렉토리에서 다음 명령을 실행합니다.

firebase deploy

기본적으로 firebase deploy는 프로젝트 디렉토리에 있는 모든 배포 가능한 리소스의 출시 버전을 만듭니다. 특정 Firebase 서비스 또는 기능을 배포하려면 부분 배포를 사용합니다.

프로젝트 디렉토리에서 리소스를 배포하려면 프로젝트 디렉토리에 firebase.json 파일이 포함되어 있어야 합니다. 이 파일은 firebase init 명령에 의해 자동으로 생성되었습니다.

선택적으로 각 배포에 주석을 추가할 수 있습니다. 이 주석은 프로젝트의 Firebase 호스팅 페이지에 다른 배포 정보와 함께 표시됩니다. 예:

firebase deploy -m "Deploying the best new feature ever."

보안 규칙에 대한 배포 충돌

Firebase 실시간 데이터베이스, Firebase용 Cloud Storage, Cloud Firestore의 경우, 로컬 프로젝트 디렉토리 또는 Firebase 콘솔에서 보안 규칙을 정의할 수 있습니다.

배포 충돌을 방지하기 위한 또 다른 옵션은 부분 배포를 사용하고 Firebase 콘솔에서만 규칙을 정의하는 것입니다.

배포 할당량

매우 드물지만 일부 경우에는 Firebase 배포 작업의 속도나 양을 제한하는 할당량을 초과해야 할 수 있습니다. 예를 들어 매우 많은 수의 함수를 배포할 때 HTTP 429 Quota 오류 메시지가 표시될 수 있습니다. 이러한 문제를 해결하려면 부분 배포를 사용하거나 할당량 증가를 요청해 보세요. 예를 들어 사용자별 100초당 쓰기 요청이라는 할당량은 위에 설명된 Cloud Functions 429 오류를 해결하는 데 도움이 될 수 있습니다.

배포 롤백

원하는 릴리스에 대해 롤백작업을 선택하여 프로젝트의 Firebase 호스팅 페이지에서 Firebase 호스팅 배포를 롤백할 수 있습니다. 현재는 Firebase 실시간 데이터베이스, Firebase용 Cloud Storage 또는 Cloud Firestore에 대해 보안 규칙 릴리스를 롤백할 수 없습니다.

특정 Firebase 서비스 배포

특정 Firebase 서비스 또는 기능만 배포하려면 firebase deploy 명령에서 플래그에 쉼표로 구분된 목록을 사용할 수 있습니다. 예를 들어 다음 명령어는 Firebase 호스팅 콘텐츠 및 Cloud Storage 보안 규칙을 배포합니다.

firebase deploy --only hosting,storage

다음 표에서는 부분 배포에 사용 가능한 서비스 및 기능을 보여줍니다. 플래그의 이름은 firebase.json 구성 파일의 키에 해당합니다.

플래그 구문 배포된 서비스 또는 기능
--only hosting Firebase 호스팅 콘텐츠
--only database Firebase 실시간 데이터베이스 규칙
--only storage Firebase용 Cloud Storage 규칙
--only firestore Cloud Firestore 규칙 색인
--only firestore:rules Cloud Firestore 규칙
--only firestore:indexes Cloud Firestore 색인
--only functions Firebase용 Cloud Functions(이 플래그의 특정 버전 가능)

특정 함수 배포

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

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

또 다른 옵션은 /functions/index.js 파일에서 내보내기 그룹으로 함수를 그룹화하는 것입니다. 그룹화 함수를 사용하면 단일 명령을 통해 여러 함수를 배포할 수 있습니다.

예를 들어 다음 함수를 작성하여 groupAgroupB를 정의할 수 있습니다.

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

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

이 예에서 개별 functions/groupB.js 파일에는 groupB의 함수를 특별히 정의할 수 있는 추가 함수가 포함되어 있습니다.

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

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

이 예에서는 프로젝트 디렉토리에서 다음 명령을 실행하여 모든 groupA 함수를 배포할 수 있습니다.

firebase deploy --only functions:groupA

또는 다음 명령을 실행하여 그룹 내에서 특정 함수를 대상으로 지정할 수 있습니다.

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

함수 삭제

Firebase CLI는 이전에 배포된 함수를 삭제하기 위한 다음 명령 및 옵션을 지원합니다.

  • 모든 지역에서 지정된 이름과 일치하는 모든 함수를 삭제합니다.

    firebase functions:delete function1-name

  • 기본이 아닌 지역에서 실행 중인 지정된 함수를 삭제합니다.

    firebase functions:delete function1-name --region region-name

  • 2개 이상의 함수를 삭제합니다.

    firebase functions:delete function1-name function2-name

  • 지정된 함수 그룹을 삭제합니다.

    firebase functions:delete group-name

  • 확인 프롬프트를 우회합니다.

    firebase functions:delete function1-name --force

배포 전 및 배포 후 후크 설정

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

배포 전 또는 배포 후 후크를 설정하려면 bash 스크립트를 firebase.json 구성 파일에 추가합니다. firebase.json 파일에 짧은 스크립트를 직접 정의하거나 프로젝트 디렉토리에 있는 다른 파일을 참조할 수 있습니다.

예를 들어 다음 스크립트는 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

모든 배포할 수 있는 애셋에 대해 predeploypostdeploy 후크를 설정할 수 있습니다. firebase deploy를 실행하면 firebase.json 파일에 정의된 모든 배포 전 배포후 작업이 트리거됩니다. 특정 Firebase 서비스와 연관된 작업만 실행하려면 부분 배포 명령을 사용합니다.

predeploypostdeploy 후크 모두 스크립트의 표준 출력 및 오류 스트림을 터미널에 출력합니다. 다음과 같은 실패 사례를 참고하세요.

  • 배포 전 후크가 예상대로 완료하지 못하면 배포가 취소됩니다.
  • 어떤 이유로든 배포가 실패하면 배포 후 후크가 트리거되지 않습니다.

환경 변수

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

  • $GCLOUD_PROJECT - 활성 프로젝트 ID
  • $PROJECT_DIR - firebase.json을 포함하는 루트 디렉토리
  • $RESOURCE_DIR - (hostingfunctions 스크립트만 해당) 배포할 호스팅 또는 Cloud Functions 리소스가 포함된 디렉토리의 위치

프로젝트 별칭 관리

동일한 프로젝트 디렉토리에 여러 Firebase 프로젝트를 연결할 수 있습니다. 예를 들어 스테이징 및 프로덕션 용도로 Firebase 프로젝트를 하나씩 사용해야 할 수 있습니다. 여러 프로젝트 환경을 사용하면 프로덕션에 배포하기 전 변경 사항을 확인할 수 있습니다. firebase use 명령을 사용하면 별칭을 전환하거나 새 별칭을 만들 수 있습니다.

프로젝트 별칭 추가

프로젝트 초기화 중 Firebase 프로젝트를 선택하면 프로젝트의 별칭이 자동으로 default로 지정됩니다. 하지만 프로젝트 특정 명령이 다른 Firebase 프로젝트에 대해 실행되지만, 동일한 프로젝트 디렉토리를 사용하도록 하려면 프로젝트 디렉토리 내에서 다음 명령을 실행합니다.

firebase use --add

이 명령은 또 다른 Firebase 프로젝트를 선택하고 정의된 별칭을 제공하도록 안내합니다. 별칭 정의는 프로젝트 디렉토리 안의 .firebaserc 파일에 기록됩니다.

프로젝트 별칭 사용

정의된 Firebase 프로젝트 별칭을 사용하려면 프로젝트 디렉토리 내에서 다음 명령을 실행합니다.

명령 설명
firebase use 프로젝트 디렉토리에 대해 현재 정의된 별칭 목록 표시
firebase use alias_or_project-id 프로젝트 디렉토리의 별칭 전환
firebase use --clear 현재 '사용된' 별칭을 지우고 모든 명령을 default 별칭으로 전송
firebase use --unalias alias 프로젝트 디렉토리에서 별칭 삭제

별칭을 사용하는 동안에는 모든 프로젝트 관련 명령(예: firebase deploy 또는 firebase data:get)이 현재 '사용된' Firebase 프로젝트에 대해 실행됩니다. 프로젝트 디렉토리에 별칭이 하나만 정의된 경우 모든 프로젝트 관련 명령이 해당 별칭에 대해 자동으로 실행됩니다.

소스 제어 및 Firebase 프로젝트 별칭

일반적으로 .firebaserc 파일을 소스 제어에 체크인해야 합니다. 이렇게 하면 팀원들이 공통 프로젝트 별칭을 공유할 수 있습니다. 하지만 오픈소스 프로젝트 또는 시작용 템플릿에서는 일반적으로 .firebaserc 파일을 체크인하지 않습니다.

자신만 사용하는 개발 프로젝트가 있는 경우 각 명령에 --project 플래그를 전달할 수 있습니다. 아니면 Firebase 프로젝트 별칭을 정의하지 않고 firebase use project-id를 실행할 수 있습니다.

여러 Firebase 실시간 데이터베이스 인스턴스 관리

단일 프로젝트에 여러 실시간 데이터베이스 인스턴스가 있는 경우 기본이 아닌 데이터베이스 인스턴스 --instance instance-name과 상호 작용하기 위해 instance-name.firebaseio.com 옵션을 사용합니다.

다음 명령은 --instance 옵션을 지원합니다.

명령
database:profile
database:remove
database:push
database:set
database:update
database:get

명령 참조

관리 명령

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

배포 및 로컬 개발

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

명령 설명
deploy 프로젝트 디렉토리에서 Firebase 프로젝트로 코드 및 애셋을 배포합니다. Firebase 호스팅의 경우 firebase.json 구성 파일이 필요합니다.
serve Firebase 호스팅 구성을 사용하여 로컬 웹 서버를 시작합니다. 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 명령어

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

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

사용자 관리 명령

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

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

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