단일 Firebase 프로젝트에서 하나 이상의 Firebase 호스팅 사이트를 설정할 수 있습니다. 사이트가 모두 동일한 Firebase 프로젝트에 있으므로 모든 사이트가 프로젝트의 다른 Firebase 리소스에 액세스할 수 있습니다.
동일한 Firebase 프로젝트 내에서 여러 호스팅 사이트를 설정하면 관련 사이트와 앱 간에 Firebase 리소스를 더 쉽게 공유할 수 있습니다. 예를 들어 블로그, 관리자 패널, 공개 앱을 동일한 Firebase 프로젝트의 개별 사이트로 설정하면 모두 동일한 Firebase 인증 사용자 데이터베이스를 공유하는 동시에 고유한 도메인이나 콘텐츠를 가질 수 있습니다.
1단계 : Firebase CLI 버전 업데이트
최신 버전의 Firebase CLI로 업데이트하여 최신 Firebase 호스팅 기능에 액세스하세요.
2단계 : 추가 사이트 추가
다음 방법 중 하나를 사용하여 Firebase 프로젝트에 추가 사이트를 추가합니다.
Firebase 콘솔의 호스팅 페이지 에서 워크플로 사용
Firebase CLI 명령어 사용:
firebase hosting:sites:create SITE_ID
호스팅 REST API 사용:
projects.sites.create
이러한 각 방법에 대해 사이트의 Firebase 프로비저닝 기본 하위 도메인을 구성하는 데 사용되는 SITE_ID
를 지정합니다.
-
SITE_ID .web.app
-
SITE_ID .firebaseapp.com
SITE_ID
는 이러한 URL에 사용되기 때문에 사이트 ID에는 다음과 같은 요구 사항이 있습니다.
- 유효한 호스트 이름 레이블이어야 합니다. 즉, 를 포함할 수 없습니다
.
,_
등 - 30자 이하여야 합니다.
- Firebase 내에서 전역적으로 고유해야 합니다.
각 사이트에 선택적으로 사용자 지정 도메인을 추가 하여 여러 URL에 동일한 콘텐츠 및 구성을 제공할 수도 있습니다.
보조 사이트 삭제
다음 방법 중 하나를 사용하여 Firebase 프로젝트에서 원치 않는 사이트를 삭제합니다.
Firebase 콘솔의 호스팅 페이지 에서 워크플로 사용
Firebase CLI 명령어 사용:
firebase hosting:sites:delete SITE_ID
호스팅 REST API 사용:
projects.sites.delete
Firebase 프로젝트 ID와 SITE_ID
가 동일한 기본 사이트는 삭제할 수 없습니다.
3단계 : 사이트의 배포 대상 설정
여러 사이트가 있고 Firebase CLI 배포 명령을 실행하는 경우 CLI는 각 사이트에 배포해야 하는 설정을 전달할 방법이 필요합니다. 배포 대상 을 사용하면 firebase.json
구성 파일 과 Firebase CLI 명령 에서 TARGET_NAME
이 있는 특정 사이트를 고유하게 식별하여 사이트를 테스트하거나 배포할 수 있습니다.
배포 대상을 만들고 TARGET_NAME
을 호스팅 사이트에 적용하려면 프로젝트 디렉터리의 루트에서 다음 CLI 명령을 실행합니다.
firebase target:apply hosting TARGET_NAME RESOURCE_IDENTIFIER
여기서 매개변수는 다음과 같습니다.
TARGET_NAME — 배포할 호스팅 사이트의 고유한 이름(직접 정의한 이름)
RESOURCE_IDENTIFIER — Firebase 프로젝트에 나열된 호스팅 사이트의
SITE_ID
예를 들어 Firebase 프로젝트에 두 개의 사이트( myapp-blog
및 myapp-app
)를 만든 경우 다음 명령을 실행하여 각 사이트에 고유한 TARGET_NAME
(각각 blog
및 app
)을 적용할 수 있습니다.
firebase target:apply hosting blog myapp-blog
firebase target:apply hosting app myapp-app
배포 대상 설정은 프로젝트 디렉토리의 .firebaserc
파일에 저장되므로 배포 대상은 프로젝트당 한 번만 설정하면 됩니다.
4단계 : 각 사이트의 호스팅 구성 정의
firebase.json
파일에서 호스팅 구성을 정의할 때 사이트에 적용된 TARGET_NAME
을 사용하세요.
firebase.json
파일이 여러 사이트에 대한 구성을 정의하는 경우 배열 형식을 사용합니다.{ "hosting": [ { "target": "blog", // "blog" is the applied TARGET_NAME for the Hosting site "myapp-blog" "public": "blog/dist", // contents of this folder are deployed to the site "myapp-blog" // ... }, { "target": "app", // "app" is the applied TARGET_NAME for the Hosting site "myapp-app" "public": "app/dist", // contents of this folder are deployed to the site "myapp-app" // ... "rewrites": [...] // You can define specific Hosting configurations for each site } ] }
firebase.json
파일이 하나의 사이트에 대한 구성만 정의하는 경우 배열 형식을 사용할 필요가 없습니다.{ "hosting": { "target": "blog", "public": "dist", // ... "rewrites": [...] } }
5단계 : 로컬에서 테스트하고 변경 사항을 미리 보고 사이트에 배포합니다.
로컬 프로젝트 디렉터리의 루트에서 다음 명령 중 하나를 실행합니다.
명령 | 설명 |
---|---|
firebase emulators:start --only hosting | 로컬로 호스팅되는 URL에서 기본 호스팅 사이트의 호스팅 콘텐츠 및 구성을 에뮬레이트합니다. |
firebase emulators:start --only hosting: TARGET_NAME | 로컬로 호스팅된 URL에서 지정된 호스팅 사이트의 호스팅 콘텐츠 및 구성을 에뮬레이션합니다. |
firebase hosting:channel:deploy \ | 미리보기 URL에서 기본 호스팅 사이트의 호스팅 콘텐츠 및 구성을 배포합니다. |
firebase hosting:channel:deploy \ | 미리보기 URL에서 지정된 호스팅 사이트의 호스팅 콘텐츠 및 구성을 배포합니다. |
firebase deploy --only hosting | firebase.json 에 구성된 모든 호스팅 사이트의 라이브 채널에 호스팅 콘텐츠 및 구성을 배포합니다. |
firebase deploy --only hosting: TARGET_NAME | 지정된 호스팅 사이트의 라이브 채널에 호스팅 콘텐츠 및 구성을 배포합니다. |
명령 | 설명 |
---|---|
(권장되지 않음, 대신 emulators:start 사용)firebase serve --only hosting | 로컬로 호스팅되는 URL에서 기본 호스팅 사이트의 호스팅 콘텐츠 및 구성을 제공합니다. |
(권장되지 않음, 대신 emulators:start 사용)firebase serve --only hosting: TARGET_NAME | 로컬로 호스팅된 URL에서 지정된 호스팅 사이트의 호스팅 콘텐츠 및 구성을 제공합니다. |