Firebase CLI(GitHub)는 Firebase 프로젝트를 관리, 조회, 배포할 수 있는 다양한 도구를 제공합니다.
Firebase CLI를 사용하기 전에 Firebase 프로젝트를 설정하세요.
CLI 설정 또는 업데이트
Firebase CLI를 설치
운영체제, 숙련도 또는 사용 사례에 맞는 방법을 사용하여 Firebase CLI를 설치할 수 있습니다. CLI 설치 방법에 관계없이 동일한 기능 및 firebase
명령어에 액세스할 수 있습니다.
Windows
다음 옵션 중 하나를 사용하여 Windows용 Firebase CLI를 설치할 수 있습니다.
옵션 | 설명 | 추천 대상 |
---|---|---|
독립 실행형 바이너리 | CLI용 독립 실행형 바이너리를 다운로드합니다. 그런 다음 실행 파일에 액세스하여 셸을 열고 firebase 명령어를 실행할 수 있습니다.
|
새 개발자 Node.js를 사용하지 않거나 익숙하지 않은 개발자 |
npm | npm(노드 패키지 관리자)을 사용하여 CLI를 설치하고 디렉터리에 관계없이 사용 가능한 firebase 명령어를 사용 설정합니다. |
Node.js를 사용 중인 개발자 |
독립 실행형 바이너리
Firebase CLI용 바이너리를 다운로드하고 실행하려면 다음 단계를 따르세요.
Windows용 Firebase CLI 바이너리를 다운로드합니다.
바이너리에 액세스하여 셸을 열고
firebase
명령어를 실행할 수 있습니다.계속해서 로그인하여 CLI를 테스트합니다.
npm
npm
(노드 패키지 관리자)을 사용하여 Firebase CLI를 설치하려면 다음 단계를 따르세요.
nvm-windows(노드 버전 관리자)를 사용하여 Node.js를 설치합니다. Node.js를 설치하면
npm
명령어 도구가 자동으로 설치됩니다.다음 명령어를 실행하여
npm
을 통해 Firebase CLI를 설치합니다.npm install -g firebase-tools
이 명령어는 디렉터리에 관계없이 사용할 수 있는
firebase
명령어를 사용 설정합니다.계속해서 로그인하여 CLI를 테스트합니다.
macOS 또는 Linux
다음 옵션 중 하나를 사용하여 macOS 또는 Linux용 Firebase CLI를 설치할 수 있습니다.
옵션 | 설명 | 추천 대상 |
---|---|---|
자동 설치 스크립트 | 운영체제를 자동으로 감지하고 최신 CLI 출시 버전을 다운로드한 다음 디렉터리에 관계없이 사용 가능한 firebase 명령어를 사용 설정하는 단일 명령어를 실행합니다. |
새 개발자 Node.js를 사용하지 않거나 익숙하지 않은 개발자 CI/CD 환경에서 자동 배포 |
독립 실행형 바이너리 | CLI용 독립 실행형 바이너리를 다운로드합니다. 그런 다음 워크플로에 맞게 바이너리를 구성하여 실행할 수 있습니다. | CLI를 사용하는 완전히 맞춤설정 가능한 워크플로 |
npm | npm(노드 패키지 관리자)을 사용하여 CLI를 설치하고 디렉터리에 관계없이 사용 가능한 firebase 명령어를 사용 설정합니다. |
Node.js를 사용 중인 개발자 |
자동 설치 스크립트
자동 설치 스크립트를 사용하여 Firebase CLI를 설치하려면 다음 단계를 따르세요.
다음 cURL 명령어를 실행합니다.
curl -sL https://firebase.tools | bash
이 스크립트는 운영체제를 자동으로 감지하고 최신 Firebase CLI 릴리스를 다운로드한 다음 디렉터리에 관계없이 사용 가능한
firebase
명령어를 사용 설정합니다.계속해서 로그인하여 CLI를 테스트합니다.
자동 설치 스크립트에 대한 추가 예시와 세부정보는 firebase.tools의 스크립트 소스 코드를 참조하세요.
독립 실행형 바이너리
사용 중인 OS에 맞는 Firebase CLI용 바이너리를 다운로드하여 실행하려면 다음 단계를 따르세요.
(선택사항) 전역적으로 사용할 수 있는
firebase
명령어를 설정합니다.chmod +x ./firebase_tools
를 실행하여 바이너리를 실행 가능하게 만듭니다.- 바이너리의 경로를 PATH에 추가합니다.
계속해서 로그인하여 CLI를 테스트합니다.
npm
npm
(노드 패키지 관리자)을 사용하여 Firebase CLI를 설치하려면 다음 단계를 따르세요.
nvm(노드 버전 관리자)을 사용하여 Node.js를 설치합니다.
Node.js를 설치하면npm
명령어 도구가 자동으로 설치됩니다.다음 명령어를 실행하여
npm
을 통해 Firebase CLI를 설치합니다.npm install -g firebase-tools
이 명령어는 디렉터리에 관계없이 사용할 수 있는
firebase
명령어를 사용 설정합니다.계속해서 로그인하여 CLI를 테스트합니다.
로그인하여 Firebase CLI 테스트
CLI를 설치한 후에는 인증해야 합니다. 그러면 Firebase 프로젝트를 나열하여 인증을 확인할 수 있습니다.
다음 명령어를 실행하여 Google 계정으로 Firebase에 로그인합니다.
firebase login
이 명령어는 로컬 머신을 Firebase에 연결하고 Firebase 프로젝트에 대한 액세스 권한을 부여합니다.
Firebase 프로젝트를 나열하여 CLI가 올바르게 설치되었고 사용자 계정에 액세스하는지 테스트합니다. 다음 명령어를 실행합니다.
firebase projects:list
표시된 목록은 Firebase Console에 나열된 Firebase 프로젝트와 같아야 합니다.
최신 버전으로 CLI 업데이트
일반적으로 최신 Firebase CLI 버전을 사용하는 것이 좋습니다.
CLI 버전을 업데이트하는 방법은 운영체제와 CLI 설치 방법에 따라 달라집니다.
Windows
- 독립 실행형 바이너리: 새 버전을 다운로드한 후 시스템에서 바꿉니다.
- npm:
npm install -g firebase-tools
를 실행합니다.
macOS
- 자동 설치 스크립트:
curl -sL https://firebase.tools | upgrade=true bash
를 실행합니다. - 독립 실행형 바이너리: 새 버전을 다운로드한 후 시스템에서 바꿉니다.
- npm:
npm install -g firebase-tools
를 실행합니다.
Linux
- 자동 설치 스크립트:
curl -sL https://firebase.tools | upgrade=true bash
를 실행합니다. - 독립 실행형 바이너리: 새 버전을 다운로드한 후 시스템에서 바꿉니다.
- npm:
npm install -g firebase-tools
를 실행합니다.
CI 시스템과 함께 CLI 사용
Firebase CLI의 경우 인증을 완료하려면 브라우저가 필요하지만 CLI는 CI 및 기타 헤드리스 환경과 완벽하게 호환됩니다.
머신에서 브라우저를 사용하여 Firebase CLI를 설치합니다.
다음 명령어를 실행하여 로그인 프로세스를 시작합니다.
firebase login:ci
제공된 URL을 방문하여 Google 계정으로 로그인합니다.
새 갱신 토큰을 출력합니다. 현재 CLI 세션은 영향을 받지 않습니다.
출력된 토큰을 안전하면서도 액세스 가능한 방식으로 CI 시스템에 저장합니다.
firebase
명령어를 실행할 때 이 토큰을 사용합니다. 다음과 같은 두 가지 옵션 중 하나를 사용할 수 있습니다.옵션 1: 토큰을
FIREBASE_TOKEN
환경 변수로 저장합니다. 시스템에서 자동으로 토큰을 사용합니다.옵션 2: CI 시스템에서 모든
firebase
명령어에--token TOKEN
플래그를 지정하여 실행합니다.
토큰의 로드 우선순위는 플래그, 환경 변수, 원하는 Firebase 프로젝트입니다.
Firebase 프로젝트 초기화
Firebase 프로젝트에 배포와 같이 CLI를 사용하여 수행되는 다수의 일반적인 작업에는 프로젝트 디렉터리가 필요합니다. 프로젝트 디렉터리는 firebase init
명령어를 사용하여 설정합니다. 프로젝트 디렉터리는 일반적으로 소스 관리 루트와 동일한 디렉터리이며 firebase init
를 실행한 후에는 디렉터리에 firebase.json
구성 파일이 포함됩니다.
새로운 Firebase 프로젝트를 초기화하려면 앱 디렉터리 내에서 다음 명령어를 실행합니다.
firebase init
firebase init
명령어는 프로젝트 디렉터리 및 일부 Firebase 제품을 설정하는 과정을 안내합니다. 프로젝트 초기화 중 Firebase CLI에 다음 태스크를 완료하라는 메시지가 표시됩니다.
Firebase 프로젝트에서 설정할 Firebase 제품을 선택합니다.
그러면 선택한 제품의 특정 파일에 대한 구성을 설정하라는 메시지가 표시됩니다. 이러한 구성에 대한 자세한 내용은 특정 제품의 문서(예: Hosting)를 참조하세요. 나중에 언제든지
firebase init
를 실행하여 더 많은 Firebase 제품을 설정할 수 있습니다.기본 Firebase 프로젝트를 설정합니다.
이 단계에서는 프로젝트 관련 명령어(예:
firebase deploy
)가 적합한 Firebase 프로젝트에 대해 실행되도록 현재 프로젝트 디렉터리를 Firebase 프로젝트와 연결합니다.또한 동일한 프로젝트 디렉터리를 여러 Firebase 프로젝트(예: 스테이징 프로젝트와 프로덕션 프로젝트)와 연결할 수도 있습니다.
초기화가 끝나면 Firebase는 로컬 앱 디렉터리의 루트에 다음 두 파일을 자동으로 생성합니다.
프로젝트 구성이 나열되어 있는
firebase.json
구성 파일프로젝트 별칭을 저장하는
.firebaserc
파일
firebase.json
파일
firebase init
명령어는 프로젝트 디렉터리의 루트에 firebase.json
구성 파일을 생성합니다.
애셋을 Firebase CLI로 배포하려면 Firebase 프로젝트에 배포되는 프로젝트 디렉터리의 파일 및 설정을 지정하는 firebase.json
파일이 필요합니다. 프로젝트 디렉터리 또는 Firebase Console에서 일부 설정을 정의할 수 있으므로 잠재적인 배포 충돌이 해결되었는지 확인하세요.
대부분의 Firebase Hosting 옵션은 firebase.json
파일에서 직접 구성할 수 있습니다. 하지만 Firebase CLI로 배포할 수 있는 다른 Firebase 서비스의 경우 firebase init
명령어는 해당 서비스의 설정을 정의할 수 있는 특정 파일(예: Cloud Functions의 index.js
파일)을 만듭니다. firebase.json
파일에 배포 전 또는 배포 후 후크를 설정할 수도 있습니다.
다음은 초기화 중 Firebase Hosting, Cloud Firestore, Cloud Functions for Firebase(TypeScript 소스 및 린트 옵션 선택됨)를 선택한 경우 기본 설정이 포함된 예시용 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",
"npm --prefix \"$RESOURCE_DIR\" run build"
]
}
}
기본적으로 firebase.json
이 사용되지만 --config PATH
플래그를 전달하여 대체 구성 파일을 지정할 수 있습니다.
여러 Cloud Firestore 데이터베이스 구성
firebase init
을 실행하면 firebase.json
파일에 위에 표시된 것처럼 프로젝트의 기본 데이터베이스에 해당하는 단일 firestore
키가 포함됩니다.
프로젝트에 여러 개의 Cloud Firestore 데이터베이스가 포함된 경우 firebase.json
파일을 수정하여 각 데이터베이스와 서로 다른 Cloud Firestore Security Rules 및 데이터베이스 색인 소스 파일을 연결합니다. 각 데이터베이스에 대해 하나의 항목이 있는 JSON 배열로 파일을 수정합니다.
"firestore": [
{
"database": "(default)",
"rules": "firestore.default.rules",
"indexes": "firestore.default.indexes.json"
},
{
"database": "ecommerce",
"rules": "firestore.ecommerce.rules",
"indexes": "firestore.ecommerce.indexes.json"
}
],
배포 시 무시할 Cloud Functions 파일
함수 배포 시 CLI가 무시할 functions
디렉터리의 파일 목록을 자동으로 지정합니다. 이렇게 하면 배포의 데이터 크기를 늘릴 수 있는 여분의 백엔드 파일에 대한 배포를 방지합니다.
JSON 형식으로 표시되며 기본적으로 무시되는 파일 목록은 다음과 같습니다.
"ignore": [
".git",
".runtimeconfig.json",
"firebase-debug.log",
"firebase-debug.*.log",
"node_modules"
]
firebase.json
에 ignore
의 자체 커스텀 값을 추가하는 경우 위에 표시된 파일 목록을 유지하거나 누락된 경우 추가해야 합니다.
프로젝트 별칭 관리
동일한 프로젝트 디렉터리에 여러 Firebase 프로젝트를 연결할 수 있습니다.
예를 들어 스테이징 및 프로덕션 용도로 Firebase 프로젝트를 하나씩 사용해야 할 수 있습니다. 여러 프로젝트 환경을 사용하면 프로덕션에 배포하기 전 변경사항을 확인할 수 있습니다. firebase use
명령어를 사용하면 별칭을 전환하거나 새 별칭을 만들 수 있습니다.
프로젝트 별칭 추가
프로젝트 초기화 중 Firebase 프로젝트를 선택하면 프로젝트의 별칭이 자동으로 default
로 지정됩니다. 하지만 프로젝트 관련 명령어가 다른 Firebase 프로젝트를 대상으로 실행되면서 동일한 프로젝트 디렉터리를 사용하도록 하려면 프로젝트 디렉터리 내에서 다음 명령어를 실행합니다.
firebase use --add
이 명령어는 또 다른 Firebase 프로젝트를 선택하고 해당 프로젝트를 별칭으로 할당하도록 안내합니다. 별칭 할당은 프로젝트 디렉터리 안의 .firebaserc
파일에 기록됩니다.
프로젝트 별칭 사용
할당된 Firebase 프로젝트 별칭을 사용하려면 프로젝트 디렉터리 내에서 다음 명령어를 실행합니다.
명령어 | 설명 |
---|---|
firebase use |
프로젝트 디렉터리에 대해 현재 정의된 별칭 목록 표시 |
firebase use \ |
지정된 Firebase 프로젝트를 대상으로 실행할 모든 명령어를 전송합니다.
CLI에서 이 프로젝트를 현재 '활성 프로젝트'로 사용합니다. |
firebase use --clear |
활성 프로젝트를 지웁니다. 다른 CLI 명령어를 실행하기 전에 |
firebase use \ |
프로젝트 디렉터리에서 별칭을 삭제합니다. |
CLI 명령어에 --project
플래그를 전달하면 현재 활성 프로젝트로 사용 중인 프로젝트를 재정의할 수 있습니다. 예를 들어 staging
별칭을 할당한 Firebase 프로젝트를 대상으로 실행할 CLI를 설정할 수 있습니다. prod
별칭을 할당한 Firebase 프로젝트를 대상으로 단일 명령어를 실행하려면
등의 명령어를 실행하면 됩니다.
소스 관리 및 프로젝트 별칭
일반적으로 팀에서 프로젝트 별칭을 공유할 수 있도록 .firebaserc
파일을 소스 제어에 체크인해야 합니다. 하지만 오픈소스 프로젝트 또는 시작용 템플릿에서는 일반적으로 .firebaserc
파일을 체크인하지 않습니다.
자신만 사용하는 개발 프로젝트가 있는 경우 각 명령어에 --project
플래그를 전달하거나 Firebase 프로젝트에 별칭을 할당하지 않고 firebase use PROJECT_ID
를 실행할 수 있습니다.
Firebase 프로젝트를 로컬로 제공 및 테스트
프로덕션에 배포하기 전 로컬에서 호스팅된 URL에서 Firebase 프로젝트를 보고 테스트할 수 있습니다. 특정 기능만 테스트하려면 firebase serve
명령어에서 플래그에 쉼표로 구분된 목록을 사용할 수 있습니다.
다음 두 작업 중 하나를 수행하려면 로컬 프로젝트 디렉터리의 루트에서 다음 명령어를 실행합니다.
- Firebase 호스팅 앱의 정적 콘텐츠를 봅니다.
- Cloud Functions를 사용하여 Firebase Hosting용 동적 콘텐츠를 생성하고 프로덕션(배포된) HTTP 함수를 사용하여 로컬 URL에서 Hosting을 에뮬레이션합니다.
firebase serve --only hosting
로컬 HTTP 함수를 사용하여 프로젝트 에뮬레이션
로컬 HTTP 함수를 사용하여 프로젝트를 에뮬레이션하려면 프로젝트 디렉터리에서 다음 명령어 중 하나를 실행합니다.
로컬 URL에서 테스트하기 위해 HTTP 함수 및 호스팅을 에뮬레이션하려면 다음 명령어를 사용합니다.
firebase serve
firebase serve --only functions,hosting // uses a flag
HTTP 함수만 에뮬레이션하려면 다음 명령어를 사용합니다.
firebase serve --only functions
다른 로컬 기기에서 테스트
기본적으로 firebase serve
는 localhost
요청에만 응답합니다. 즉, 컴퓨터의 웹브라우저에서는 호스팅된 콘텐츠에 액세스할 수 있지만 네트워크의 다른 기기에서는 액세스할 수 없습니다. 다른 로컬 기기에서 테스트하려면 다음과 같이 --host
플래그를 사용하세요.
firebase serve --host 0.0.0.0 // accepts requests to any host
Firebase 프로젝트에 배포
Firebase CLI는 다음을 포함하여 Firebase 프로젝트에 대한 코드 및 애셋 배포를 관리합니다.
- Firebase Hosting 사이트의 새 버전
- 새로운, 업데이트된 또는 기존의 Cloud Functions for Firebase
- Firebase Data Connect용 새로운, 업데이트된 스키마 및 커넥터
- Firebase Realtime Database 규칙
- Cloud Storage for Firebase 규칙
- Cloud Firestore 규칙
- Cloud Firestore 색인
Firebase 프로젝트에 배포하려면 프로젝트 디렉터리에서 다음 명령어를 실행합니다.
firebase deploy
선택적으로 각 배포에 주석을 추가할 수도 있습니다. 프로젝트의 Firebase Hosting 페이지에 다른 배포 정보와 함께 표시됩니다. 예를 들면 다음과 같습니다.
firebase deploy -m "Deploying the best new feature ever."
firebase deploy
명령어를 사용할 경우 다음 사항에 유의하세요.
프로젝트 디렉터리에서 리소스를 배포하려면 프로젝트 디렉터리에
firebase.json
파일이 있어야 합니다. 이 파일은firebase init
명령어로 자동 생성됩니다.기본적으로
firebase deploy
명령어를 실행하면 프로젝트 디렉터리에 있는 모든 배포 가능한 리소스의 출시 버전이 생성됩니다. 특정 Firebase 서비스 또는 기능을 배포하려면 부분 배포를 사용합니다.
보안 규칙의 배포 충돌
Firebase Realtime Database, Cloud Storage for Firebase, Cloud Firestore의 경우 로컬 프로젝트 디렉터리 또는 Firebase Console에서 보안 규칙을 정의할 수 있습니다.
배포 충돌을 방지하기 위한 또 다른 옵션은 부분 배포를 사용하고 Firebase Console에서만 규칙을 정의하는 것입니다.
배포 할당량
매우 드물긴 하지만 Firebase 배포 작업의 속도나 양을 제한하는 할당량을 초과하는 경우가 생길 수 있습니다. 예를 들어 매우 많은 수의 함수를 배포할 때 HTTP 429 Quota
오류 메시지가 표시될 수 있습니다. 이 문제를 해결하려면 부분 배포를 사용해 보세요.
배포 롤백
원하는 출시 버전으로 롤백 작업을 선택하여 프로젝트의 Firebase Hosting 페이지에서 Firebase Hosting 배포를 롤백할 수 있습니다.
현재는 Firebase Realtime Database, Cloud Storage for Firebase, Cloud Firestore에 대한 보안 규칙 릴리스를 롤백할 수 없습니다.
특정 Firebase 서비스 배포
특정 Firebase 서비스 또는 기능만 배포하려면 firebase deploy
명령어에서 플래그에 쉼표로 구분된 목록을 사용할 수 있습니다. 예를 들어 다음 명령어는 Firebase Hosting 콘텐츠 및 Cloud Storage 보안 규칙을 배포합니다.
firebase deploy --only hosting,storage
다음 표에서는 부분 배포에 사용 가능한 서비스 및 기능을 보여줍니다. 플래그 이름은 firebase.json
구성 파일의 키에 해당합니다.
플래그 구문 | 배포된 서비스 또는 기능 |
---|---|
--only hosting |
Firebase Hosting 콘텐츠 |
--only database |
규칙 Firebase Realtime Database개 |
--only dataconnect |
Firebase Data Connect 스키마 및 커넥터 |
--only storage |
규칙 Cloud Storage for Firebase개 |
--only firestore |
구성된 모든 데이터베이스의 Cloud Firestore 규칙 및 색인 |
--only functions |
Cloud Functions for Firebase(이 플래그의 특정 버전 가능) |
특정 함수 배포
함수를 배포할 때 특정 함수를 대상으로 지정할 수 있습니다. 예를 들면 다음과 같습니다.
firebase deploy --only functions:function1
firebase deploy --only functions:function1,functions:function2
또 다른 옵션은 /functions/index.js
파일에서 내보내기 그룹으로 함수를 그룹화하는 것입니다. 그룹화 함수를 사용하면 단일 명령어를 통해 여러 함수를 배포할 수 있습니다.
예를 들어 다음 함수를 작성하여 groupA
및 groupB
를 정의할 수 있습니다.
var functions = require('firebase-functions/v1');
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/v1');
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 FUNCTION-1_NAME
기본이 아닌 리전에서 실행 중인 지정된 함수를 삭제합니다.
firebase functions:delete FUNCTION-1_NAME --region REGION_NAME
2개 이상의 함수를 삭제합니다.
firebase functions:delete FUNCTION-1_NAME FUNCTION-2_NAME
지정된 함수 그룹을 삭제합니다.
firebase functions:delete GROUP_NAME
확인 프롬프트를 우회합니다.
firebase functions:delete FUNCTION-1_NAME --force
배포 전 및 배포 후 스크립트 태스크 설정
셸 스크립트를 firebase deploy
명령어에 연결하여 배포 전 또는 배포 후 태스크를 수행할 수 있습니다. 예를 들어 배포 전 스크립트로 TypeScript 코드를 JavaScript로 변환 컴파일하고, 배포 후 후크를 통해 새 사이트 콘텐츠를 Firebase Hosting에 배포함을 관리자에게 알릴 수 있습니다.
배포 전 또는 배포 후 후크를 설정하려면 bash 스크립트를 firebase.json
구성 파일에 추가합니다. firebase.json
파일에 짧은 스크립트를 직접 정의하거나 프로젝트 디렉터리에 있는 다른 파일을 참조할 수 있습니다.
예를 들어 다음 스크립트는 Firebase Hosting에 배포를 성공한 후 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
배포할 수 있는 애셋 모두에 predeploy
및 postdeploy
후크를 설정할 수 있습니다. firebase deploy
를 실행하면 firebase.json
파일에 정의된 모든 배포 전 및 배포 후 태스크가 트리거됩니다. 특정 Firebase 서비스와 연관된 태스크만 실행하려면 부분 배포 명령어를 사용합니다.
predeploy
및 postdeploy
후크 모두 스크립트의 표준 출력 및 오류 스트림을 터미널에 출력합니다. 오류 사례는 다음을 참조하세요.
- 배포 전 후크가 예상대로 완료되지 않으면 배포가 취소됩니다.
- 어떠한 이유로 인해 배포가 실패하면 배포 후 후크가 트리거되지 않습니다.
환경 변수
배포 전 및 배포 후 후크에서 실행 중인 스크립트에서 다음 환경 변수를 사용할 수 있습니다.
$GCLOUD_PROJECT
: 활성 프로젝트의 프로젝트 ID$PROJECT_DIR
:firebase.json
파일을 포함하는 루트 디렉터리$RESOURCE_DIR
: (hosting
및functions
스크립트에만 해당) 배포할 Hosting 또는 Cloud Functions 리소스가 포함된 디렉터리의 위치
여러 Realtime Database 인스턴스 관리
Firebase 프로젝트에는 여러 Firebase Realtime Database 인스턴스를 포함할 수 있습니다. 기본적으로 CLI 명령어는 기본 데이터베이스 인스턴스와 상호작용합니다.
하지만 --instance DATABASE_NAME
--instance
플래그를 지원합니다.
firebase database:get
firebase database:profile
firebase database:push
firebase database:remove
firebase database:set
firebase database:update
명령어 참조
CLI 관리 명령어
명령어 | 설명 |
---|---|
help | CLI 또는 특정 명령어에 대한 도움말 정보를 표시합니다. |
init | 현재 디렉터리에 새 Firebase 프로젝트를 연결하고 설정합니다.
이 명령어는 현재 디렉터리에 firebase.json 구성 파일을 만듭니다. |
login | Firebase 계정에 대해 CLI를 인증합니다. 웹브라우저에 액세스할 수 있어야 합니다.localhost 액세스를 허용하지 않는 원격 환경에서 CLI에 로그인하려면 --no-localhost |
login:ci | 비대화형 환경에서 사용할 인증 토큰을 생성합니다. |
logout | Firebase 계정에서 CLI를 로그아웃 처리합니다. |
open | 브라우저를 열어 관련 프로젝트 리소스를 엽니다. |
projects:list | 액세스 권한이 있는 모든 Firebase 프로젝트를 나열합니다. |
use | CLI의 활성 Firebase 프로젝트를 설정합니다. 프로젝트 별칭을 관리합니다. |
프로젝트 관리 명령어
명령어 | 설명 | |
---|---|---|
Firebase 프로젝트 관리 | ||
projects:addfirebase | Firebase 리소스를 기존 Google Cloud 프로젝트에 추가합니다. | |
projects:create | 새 Google Cloud 프로젝트를 만든 다음 Firebase 리소스를 새 프로젝트에 추가합니다. | |
projects:list | 액세스 권한이 있는 모든 Firebase 프로젝트를 나열합니다. | |
Firebase 앱 관리(iOS, Android, 웹) | ||
apps:create | 활성 프로젝트에 새 Firebase 앱을 만듭니다. | |
apps:list | 활성 프로젝트에 등록된 Firebase 앱을 나열합니다. | |
apps:sdkconfig | Firebase 앱의 Google 서비스 구성을 출력합니다. | |
setup:web | 지원이 중단되었습니다. 대신 apps:sdkconfig 를 사용하고 web 을 플랫폼 인수로 지정합니다.Firebase 웹 앱의 Google 서비스 구성을 출력합니다. |
|
SHA 인증서 해시 관리(Android만 해당) | ||
apps:android:sha:create \ FIREBASE_APP_ID SHA_HASH |
지정된 SHA 인증서 해시를 지정된 Firebase Android 앱에 추가합니다. | |
apps:android:sha:delete \ FIREBASE_APP_ID SHA_HASH |
지정된 Firebase Android 앱에서 지정된 SHA 인증서 해시를 삭제합니다. | |
apps:android:sha:list \ FIREBASE_APP_ID |
지정된 Firebase Android 앱의 SHA 인증서 해시를 나열합니다. |
배포 및 로컬 개발
Firebase Hosting 사이트를 배포하고 상호작용하는 명령어입니다.
명령어 | 설명 |
---|---|
deploy | 프로젝트 디렉터리에서 활성 프로젝트로 코드와 애셋을 배포합니다. Firebase Hosting의 경우 firebase.json 구성 파일이 필요합니다.
|
serve | Firebase Hosting 구성을 사용하여 로컬 웹 서버를 시작합니다.
Firebase Hosting의 경우 firebase.json 구성 파일이 필요합니다. |
App Distribution 명령어
명령어 | 설명 |
---|---|
appdistribution:distribute \ --app FIREBASE_APP_ID |
테스터가 빌드를 사용할 수 있도록 합니다. |
appdistribution:testers:add | 프로젝트에 테스터를 추가합니다. |
appdistribution:testers:remove | 프로젝트에서 테스터를 삭제합니다. |
App Hosting 명령어
명령어 | 설명 |
---|---|
apphosting:backends:create \ --project PROJECT_ID \ --location REGION --app APP_ID |
App Hosting 백엔드를 구성하는 단일 코드베이스에 연결된 관리 리소스 모음을 만듭니다. 원하는 경우 Firebase 앱 ID로 기존 Firebase 웹 앱을 지정합니다. |
apphosting:backends:get \ BACKEND_ID \ --project PROJECT_ID \ --location REGION |
백엔드의 공개 URL을 비롯한 특정 세부정보를 가져옵니다. |
apphosting:backends:list \ --project PROJECT_ID |
프로젝트와 연결된 모든 활성 백엔드 목록을 가져옵니다. |
firebase apphosting:backends:delete \ BACKEND_ID \ --project PROJECT_ID \ --location REGION |
프로젝트에서 백엔드를 삭제합니다. |
firebase apphosting:config:export \ --project PROJECT_ID \ --secrets ENVIRONMENT_NAME |
앱 에뮬레이션에 사용할 보안 비밀을 내보냅니다. 기본값은 apphosting.yaml 에 저장된 보안 비밀이거나 --secrets 를 사용하여 상응하는 apphosting.ENVIRONMENT_NAME.yaml 파일이 있는 환경을 지정합니다.
|
firebase apphosting:rollouts:create \ BACKEND_ID \ --git_branch BRANCH_NAME \ --git_commit COMMIT_ID |
수동으로 트리거된 출시를 만듭니다. 원하는 경우 브랜치 또는 특정 커밋의 최신 커밋을 지정합니다. 옵션이 제공되지 않으면 브랜치 목록에서 선택하라는 메시지가 표시됩니다. |
apphosting:secrets:set
KEY
--project PROJECT_ID \ --location REGION \ --data-file DATA_FILE_PATH |
Secret Manager에 보안 비밀 자료를 저장합니다. 필요한 경우 보안 비밀 데이터를 읽을 파일 경로를 제공합니다. _ 로 설정하여 표준 입력에서 보안 비밀 데이터를 읽습니다.
|
apphosting:secrets:grantaccess
KEY
BACKEND_ID \ --project PROJECT_ID \ --location REGION |
빌드 또는 런타임에 App Hosting에서 액세스할 수 있도록 백엔드 서비스 계정에 제공된 보안 비밀에 대한 액세스 권한을 부여합니다. |
apphosting:secrets:describe
KEY \ --project PROJECT_ID |
보안 비밀 및 버전에 대한 메타데이터를 가져옵니다. |
firebase apphosting:secrets:access \ KEY[@version] \ --project PROJECT_ID |
보안 비밀 및 버전이 제공되면 보안 비밀 값에 액세스합니다. 기본값은 최신 버전에 액세스하는 것입니다. |
Authentication(사용자 관리) 명령어
명령어 | 설명 |
---|---|
auth:export | 활성 프로젝트의 사용자 계정을 JSON 또는 CSV 파일로 내보냅니다. 자세한 내용은 auth:import 및 auth:export 페이지를 참조하세요. |
auth:import | 사용자 계정을 JSON 또는 CSV 파일에서 활성 프로젝트로 가져옵니다. 자세한 내용은 auth:import 및 auth:export 페이지를 참조하세요. |
Cloud Firestore 명령어
명령어 | 설명 |
---|---|
firestore:locations |
Cloud Firestore 데이터베이스의 사용 가능한 위치를 나열합니다. |
firestore:databases:create DATABASE_ID |
Firebase 프로젝트에서 네이티브 모드로 데이터베이스 인스턴스를 만듭니다. 이 명령어는 다음 플래그를 사용합니다.
|
firestore:databases:list |
Firebase 프로젝트에 데이터베이스를 나열합니다. |
firestore:databases:get DATABASE_ID |
Firebase 프로젝트에서 지정된 데이터베이스의 데이터베이스 구성을 가져옵니다. |
firestore:databases:update DATABASE_ID |
Firebase 프로젝트에서 지정된 데이터베이스의 데이터베이스 구성을 업데이트합니다. 플래그가 하나 이상 필요합니다. 이 명령어는 다음 플래그를 사용합니다.
|
firestore:databases:delete DATABASE_ID |
Firebase 프로젝트에서 데이터베이스를 삭제합니다. |
firestore:indexes |
Firebase 프로젝트에 데이터베이스의 색인을 나열합니다. 이 명령어는 다음 플래그를 사용합니다.
|
firestore:delete |
활성 프로젝트의 데이터베이스에서 문서를 삭제합니다. CLI를 사용하면 컬렉션의 모든 문서를 재귀적으로 삭제할 수 있습니다. CLI로 Cloud Firestore 데이터를 삭제하면 읽기 및 삭제 비용이 발생합니다. 자세한 내용은 Cloud Firestore 청구 이해를 참조하세요. 이 명령어는 다음 플래그를 사용합니다.
|
Cloud Functions for Firebase 명령어
명령어 | 설명 |
---|---|
functions:config:clone | 다른 프로젝트의 환경을 활성 Firebase 프로젝트로 클론합니다. |
functions:config:get | 활성 프로젝트의 Cloud Functions 기존 구성 값을 검색합니다. |
functions:config:set | 활성 프로젝트의 Cloud Functions 런타임 구성 값을 저장합니다. |
functions:config:unset | 활성 프로젝트의 런타임 구성에서 값을 삭제합니다. |
functions:log | 배포된 Cloud Functions에서 로그를 읽습니다. |
자세한 내용은 환경 구성 문서를 참조하세요.
Crashlytics 명령어
명령어 | 설명 |
---|---|
crashlytics:mappingfile:generateid \ --resource-file=PATH/TO/ANDROID_RESOURCE.XML |
지정된 Android 리소스(XML) 파일에 고유한 매핑 파일 ID를 생성합니다. |
crashlytics:mappingfile:upload \ --app=FIREBASE_APP_ID \ --resource-file=PATH/TO/ANDROID_RESOURCE.XML \ PATH/TO/MAPPING_FILE.TXT |
이 앱의 Proguarddhk 호환되는 매핑(TXT) 파일을 업로드하고 지정된 Android 리소스(XML) 파일에 선언된 매핑 파일 ID와 연결합니다. |
crashlytics:symbols:upload \ --app=FIREBASE_APP_ID \ PATH/TO/SYMBOLS |
Android에서 네이티브 라이브러리 비정상 종료에 대한 Crashlytics 호환 기호 파일을 생성하고 Firebase 서버에 업로드합니다. |
Data Connect 명령어
이러한 명령어와 사용 사례는 Data Connect CLI 참조 가이드에 자세히 설명되어 있습니다.
명령어 | 설명 |
---|---|
dataconnect:services:list | Firebase 프로젝트에 배포된 모든 Data Connect 서비스를 나열합니다. |
dataconnect:sql:diff \ SERVICE_ID |
지정된 서비스의 경우 로컬 Data Connect 스키마와 Cloud SQL 데이터베이스 스키마 간의 차이점을 표시합니다. |
dataconnect:sql:migrate \ --force \ SERVICE_ID |
로컬 Data Connect 스키마와 일치하도록 Cloud SQL 데이터베이스의 스키마를 마이그레이션합니다. |
dataconnect:sql:grant\ --role=ROLE \ --email=EMAIL \ SERVICE_ID |
지정된 사용자 또는 서비스 계정 이메일에 SQL 역할을 부여합니다.
--role 플래그의 경우 부여할 SQL 역할은 owner , writer , reader 중 하나입니다.
--email 플래그의 경우 역할을 부여할 사용자 또는 서비스 계정의 이메일 주소를 입력합니다.
|
dataconnect:sdk:generate | Data Connect 커넥터에 대한 입력된 SDK를 생성합니다. |
Extensions 명령어
명령어 | 설명 |
---|---|
ext | Firebase Extensions 명령어를 사용하는 방법에 대한 정보를 표시합니다. 활성 프로젝트에 설치된 확장 프로그램 인스턴스를 나열합니다. |
ext:configure \ EXTENSION_INSTANCE_ID |
확장 프로그램 인스턴스의 매개변수 값을 확장 프로그램 매니페스트에서 다시 구성합니다. |
ext:info \ PUBLISHER_ID/EXTENSION_ID |
확장 프로그램에 대한 자세한 정보를 출력합니다. |
ext:install \ PUBLISHER_ID/EXTENSION_ID |
확장 프로그램의 새 인스턴스를 확장 프로그램 매니페스트에 추가합니다. |
ext:list | Firebase 프로젝트에 설치된 모든 확장 프로그램 인스턴스를 나열합니다. 각 확장 프로그램의 인스턴스 ID를 출력합니다. |
ext:uninstall \ EXTENSION_INSTANCE_ID |
확장 프로그램 매니페스트에서 확장 프로그램 인스턴스를 삭제합니다. |
ext:update \ EXTENSION_INSTANCE_ID |
확장 프로그램 인스턴스를 확장 프로그램 매니페스트의 최신 버전으로 업데이트합니다. |
ext:export | 설치된 모든 확장 프로그램 인스턴스를 프로젝트에서 확장 프로그램 매니페스트로 내보냅니다. |
Extensions 게시자 명령어
명령어 | 설명 |
---|---|
ext:dev:init | 현재 디렉터리에서 새 확장 프로그램의 스켈레톤 코드베이스를 초기화합니다. |
ext:dev:list \ PUBLISHER_ID |
게시자가 업로드한 모든 확장 프로그램의 목록을 출력합니다. |
ext:dev:register | Firebase 프로젝트를 확장 프로그램 게시자 프로젝트로 등록합니다. |
ext:dev:deprecate \ PUBLISHER_ID/EXTENSION_ID \ VERSION_PREDICATE |
버전 조건자와 일치하는 확장 프로그램 버전을 지원 중단합니다. 버전 조건자는 단일 버전(예: 1.0.0 )이거나 다양한 버전(예: >1.0.0 )일 수 있습니다.버전 조건자가 제공되지 않은 경우 이 확장 프로그램의 모든 버전이 지원 중단됩니다. |
ext:dev:undeprecate \ PUBLISHER_ID/EXTENSION_ID \ VERSION_PREDICATE |
버전 조건자와 일치하는 확장 프로그램 버전의 지원 중단을 해제합니다. 버전 조건자는 단일 버전(예: 1.0.0 )이거나 다양한 버전(예: >1.0.0 )일 수 있습니다.버전 조건자가 제공되지 않은 경우 이 확장 프로그램의 모든 버전의 지원 중단이 해제됩니다. |
ext:dev:upload \ PUBLISHER_ID/EXTENSION_ID |
새 버전의 확장 프로그램을 업로드합니다. |
ext:dev:usage \ PUBLISHER_ID |
게시자가 업로드한 확장 프로그램의 설치 수 및 사용량 측정항목을 표시합니다. |
Hosting 명령어
명령어 | 설명 |
---|---|
hosting:disable |
활성 Firebase 프로젝트에서 Firebase Hosting 트래픽 제공을 중지합니다. 이 명령어를 실행하면 프로젝트의 Hosting URL에서 '사이트를 찾을 수 없습니다' 메시지가 표시됩니다. |
Hosting 사이트 관리 | |
firebase hosting:sites:create \ SITE_ID |
지정된 (선택사항) |
firebase hosting:sites:delete \ SITE_ID |
지정된 Hosting 사이트를 삭제합니다. 사이트를 삭제하기 전에 CLI에 확인 메시지가 표시됩니다. (선택사항) |
firebase hosting:sites:get \ SITE_ID |
지정된 Hosting 사이트에 대한 정보를 가져옵니다. |
firebase hosting:sites:list |
활성 Firebase 프로젝트의 모든 Hosting 사이트를 나열합니다. |
미리보기 채널 관리 | |
firebase hosting:channel:create \ CHANNEL_ID |
지정된 이 명령어는 채널에 배포를 수행하지 않습니다. |
firebase hosting:channel:delete \ CHANNEL_ID |
지정된 미리보기 채널을 삭제합니다. 사이트의 실시간 채널은 삭제할 수 없습니다. |
firebase hosting:channel:deploy \ CHANNEL_ID |
Hosting 콘텐츠 및 구성을 지정된 미리보기 채널에 배포합니다. 미리보기 채널이 아직 없으면 이 명령어가 채널에 배포를 수행하기 전에 먼저 기본 Hosting 사이트에서 채널을 만듭니다. |
firebase hosting:channel:list | 기본 Hosting 사이트에 있는 모든 채널('실시간' 채널 포함)을 나열합니다. |
firebase hosting:channel:open \ CHANNEL_ID |
지정된 채널의 URL로 브라우저를 열거나 브라우저로 열기를 사용할 수 없으면 URL을 반환합니다. |
버전 클론 | |
firebase hosting:clone \ SOURCE_SITE_ID:SOURCE_CHANNEL_ID \ TARGET_SITE_ID:TARGET_CHANNEL_ID |
지정된 '소스' 채널에서 가장 최근에 배포된 버전을 지정된 '대상' 채널로 클론합니다. 이 명령어는 또한 지정된 '대상' 채널로의 배포도 수행합니다. '대상' 채널이 아직 없으면 이 명령어가 채널에 배포를 수행하기 전에 먼저 '대상' Hosting 사이트에서 새로운 미리보기 채널을 만듭니다. |
firebase hosting:clone \ SOURCE_SITE_ID:@VERSION_ID \ TARGET_SITE_ID:TARGET_CHANNEL_ID |
지정된 버전을 지정된 '대상' 채널로 클론합니다. 이 명령어는 또한 지정된 '대상' 채널로의 배포도 수행합니다. '대상' 채널이 아직 없으면 이 명령어가 채널에 배포를 수행하기 전에 먼저 '대상' Hosting 사이트에서 새로운 미리보기 채널을 만듭니다.
|
Realtime Database 명령어
Firebase Console에서나 일반 firebase init
워크플로 또는 특정 firebase init database
흐름을 사용하여 초기 기본 Realtime Database 인스턴스를 생성할 수 있습니다.
인스턴스가 생성되면 여러 개의 Realtime Database 인스턴스 관리에 설명된 대로 인스턴스를 관리할 수 있습니다.
명령어 | 설명 |
---|---|
database:get | 활성 프로젝트의 데이터베이스에서 데이터를 가져오고 JSON으로 표시합니다. 색인이 생성된 데이터 쿼리를 지원합니다. |
database:instances:create | 지정된 인스턴스 이름으로 데이터베이스 인스턴스를 만듭니다. 지정된 리전에서 데이터베이스를 만들기 위한 --location 옵션을 사용합니다. 이 옵션에 사용할 리전 이름은 프로젝트의 위치 선택을 참조하세요.
현재 프로젝트에 데이터베이스 인스턴스가 없으면 firebase init 흐름을 실행하여 인스턴스를 생성하라는 메시지가 표시됩니다.
|
database:instances:list | 이 프로젝트의 모든 데이터베이스 인스턴스를 나열합니다. 지정된 리전의 데이터베이스를 나열하기 위한 --location 옵션을 사용합니다. 이 옵션에 사용할 리전 이름은 프로젝트의 위치 선택을 참조하세요. |
database:profile | 활성 프로젝트의 데이터베이스에 대한 작업 프로필을 작성합니다. 자세한 내용은 Realtime Database 작업 유형을 참조하세요. |
database:push | 활성 프로젝트의 데이터베이스에서 지정된 위치의 목록에 새 데이터를 내보냅니다. 파일, STDIN 또는 명령줄 인수에서 입력을 취합니다. |
database:remove | 활성 프로젝트의 데이터베이스에서 지정된 위치에 있는 모든 데이터를 삭제합니다. |
database:set | 활성 프로젝트의 데이터베이스에서 지정된 위치의 모든 데이터를 바꿉니다. 파일, STDIN 또는 명령줄 인수에서 입력을 취합니다. |
database:update | 활성 프로젝트의 데이터베이스에서 지정된 위치에 부분 업데이트를 수행합니다. 파일, STDIN 또는 명령줄 인수에서 입력을 취합니다. |
Remote Config 명령어
명령어 | 설명 |
---|---|
remoteconfig:versions:list \ --limit NUMBER_OF_VERSIONS |
템플릿의 가장 최신 버전 10개를 나열합니다. 0 을 지정하여 기존 버전을 모두 반환하거나 필요에 따라 --limit 옵션을 전달하여 반환되는 버전 수를 제한합니다. |
remoteconfig:get \ --v, version_number VERSION_NUMBER --o, output FILENAME |
버전별로 템플릿을 가져오고(기본값은 최신 버전으로 설정), 매개변수 그룹, 매개변수, 조건 이름, 버전을 테이블로 출력합니다. 선택적으로 -o, FILENAME 을 사용하여 지정된 파일에 출력을 작성할 수 있습니다. |
remoteconfig:rollback \ --v, version_number VERSION_NUMBER --force |
Remote Config 템플릿을 지정된 이전 버전 번호로 롤백하거나 기본적으로 직전 버전(현재 버전 -1)으로 되돌립니다. --force 가 전달되지 않으면 롤백을 진행하기 전에 Y/N 메시지를 표시합니다. |