Firebase Summit에서 발표된 모든 내용을 살펴보고 Firebase로 앱을 빠르게 개발하고 안심하고 앱을 실행하는 방법을 알아보세요. 자세히 알아보기

여러 사이트에서 프로젝트 리소스 공유

단일 Firebase 프로젝트에서 하나 이상의 Firebase 호스팅 사이트를 설정할 수 있습니다. 사이트가 모두 동일한 Firebase 프로젝트에 있으므로 모든 사이트에서 프로젝트의 다른 Firebase 리소스에 액세스할 수 있습니다.

  • 각 사이트에는 자체 호스팅 구성 이 있습니다.
  • 각 사이트는 자체 콘텐츠 컬렉션을 호스팅합니다.
  • 각 사이트에는 하나 이상의 연결된 도메인 이 있을 수 있습니다.

동일한 Firebase 프로젝트 내에서 여러 호스팅 사이트를 설정하면 관련 사이트와 앱 간에 Firebase 리소스를 보다 쉽게 ​​공유할 수 있습니다. 예를 들어 블로그, 관리자 패널 및 공개 앱을 동일한 Firebase 프로젝트의 개별 사이트로 설정하면 모두 동일한 Firebase 인증 사용자 데이터베이스를 공유하면서 고유한 도메인이나 콘텐츠를 가질 수 있습니다.

1단계 : Firebase CLI 버전 업데이트

최신 버전의 Firebase CLI로 업데이트하여 최신 Firebase 호스팅 기능에 액세스하세요.

2단계 : 사이트 추가

다음 방법 중 하나를 사용하여 Firebase 프로젝트에 사이트를 추가합니다.

이러한 각 방법에 대해 사이트에 대해 Firebase에서 프로비저닝한 기본 하위 도메인을 구성하는 데 사용되는 SITE_ID 를 지정합니다.

  • SITE_ID .web.app
  • SITE_ID .firebaseapp.com

이러한 URL에 SITE_ID 가 사용되기 때문에 사이트 ID에는 다음 요구 사항이 있습니다.

  • 을 포함할 수 없음을 의미하는 유효한 호스트 이름 레이블이어야 합니다 . , _
  • 30자 이하여야 합니다.
  • Firebase 내에서 전역적으로 고유해야 합니다.

각 사이트에 선택적으로 사용자 지정 도메인을 추가 하여 동일한 콘텐츠 및 구성을 여러 URL에 제공할 수도 있습니다.

보조 사이트 삭제

다음 방법 중 하나를 사용하여 Firebase 프로젝트에서 원치 않는 사이트를 삭제합니다.

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_IDENTIFIERFirebase 프로젝트에 나열된 호스팅 사이트의 SITE_ID

예를 들어 Firebase 프로젝트에 두 개의 사이트( myapp-blogmyapp-app )를 만든 경우 다음 명령을 실행하여 각 사이트에 고유한 TARGET_NAME ( 각각 blogapp )을 적용할 수 있습니다.

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 \
CHANNEL_ID
미리보기 URL에서 기본 호스팅 사이트의 호스팅 콘텐츠 및 구성을 배포합니다.
firebase hosting:channel:deploy \
CHANNEL_ID --only TARGET_NAME
미리보기 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에서 지정된 호스팅 사이트의 호스팅 콘텐츠 및 구성을 제공합니다.