Você pode configurar um ou mais sites do Firebase Hosting em um único projeto do Firebase. Como os sites estão todos no mesmo projeto do Firebase, todos os sites podem acessar os outros recursos do Firebase do projeto.
- Cada site possui sua própria configuração de hospedagem .
- Cada site hospeda sua própria coleção de conteúdo.
- Cada site pode ter um ou mais domínios associados .
Ao configurar vários sites do Hosting no mesmo projeto do Firebase, você pode compartilhar mais facilmente os recursos do Firebase entre sites e aplicativos relacionados. Por exemplo, se você configurar seu blog, painel de administração e aplicativo público como sites individuais no mesmo projeto do Firebase, todos eles poderão compartilhar o mesmo banco de dados de usuários do Firebase Authentication, ao mesmo tempo que terão seus próprios domínios ou conteúdos exclusivos.
Etapa 1 : atualize sua versão do Firebase CLI
Acesse os recursos mais recentes do Firebase Hosting atualizando para a versão mais recente da CLI do Firebase .
Etapa 2 : adicionar sites adicionais
Adicione outros sites a um projeto do Firebase usando um dos seguintes métodos:
Use o fluxo de trabalho na página Hosting do Firebase Console
Use o comando CLI do Firebase:
firebase hosting:sites:create SITE_ID
Use a API REST de hospedagem:
projects.sites.create
Para cada um desses métodos, você especificará um SITE_ID
que será usado para construir os subdomínios padrão provisionados pelo Firebase para o site:
-
SITE_ID .web.app
-
SITE_ID .firebaseapp.com
Como o SITE_ID
é usado para esses URLs, o ID do site tem os seguintes requisitos:
- Deve ser um rótulo de nome de host válido, o que significa que não pode conter
.
,_
, etc. - Deve ter 30 caracteres ou menos
- Deve ser globalmente exclusivo no Firebase
Para cada site, você também pode adicionar opcionalmente domínios personalizados para servir o mesmo conteúdo e configuração para vários URLs.
Excluir um site secundário
Exclua sites indesejados de um projeto do Firebase usando um dos seguintes métodos:
Use o fluxo de trabalho na página Hosting do Firebase Console
Use o comando CLI do Firebase:
firebase hosting:sites:delete SITE_ID
Use a API REST de hospedagem:
projects.sites.delete
Observe que você não pode excluir o site padrão, que tem o mesmo SITE_ID
do ID do seu projeto do Firebase.
Etapa 3 : configurar destinos de implantação para seus sites
Quando você tem vários sites e executa comandos de implantação da CLI do Firebase, a CLI precisa de uma maneira de comunicar quais configurações devem ser implantadas em cada site. Com os destinos de implantação, você pode identificar exclusivamente um site específico com um TARGET_NAME
no arquivo de configuração firebase.json
e nos comandos da CLI do Firebase para teste ou implantação em seus sites.
Para criar um destino de implantação e aplicar um TARGET_NAME
a um site de hospedagem, execute o seguinte comando CLI na raiz do diretório do seu projeto:
firebase target:apply hosting TARGET_NAME RESOURCE_IDENTIFIER
Onde estão os parâmetros:
TARGET_NAME — um nome exclusivo (que você mesmo definiu) para o site de hospedagem no qual você está implantando
RESOURCE_IDENTIFIER — o
SITE_ID
do site de hospedagem listado em seu projeto do Firebase
Por exemplo, se você criou dois sites ( myapp-blog
e myapp-app
) no seu projeto do Firebase, poderá aplicar um TARGET_NAME
exclusivo ( blog
e app
, respectivamente) a cada site executando os seguintes comandos:
firebase target:apply hosting blog myapp-blog
firebase target:apply hosting app myapp-app
As configurações dos destinos de implantação são armazenadas no arquivo .firebaserc
no diretório do projeto, portanto, você só precisa configurar os destinos de implantação uma vez por projeto.
Passo 4 : Defina a configuração de hospedagem para cada site
Use o TARGET_NAME
aplicado a um site ao definir a configuração de hospedagem no arquivo firebase.json
.
Se o arquivo
firebase.json
definir a configuração para vários sites, use um formato de array:{ "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 } ] }
Se o seu arquivo
firebase.json
definir a configuração para apenas um site, não será necessário usar um formato de array:{ "hosting": { "target": "blog", "public": "dist", // ... "rewrites": [...] } }
Etapa 5 : testar localmente, visualizar alterações e implantar em seus sites
Execute qualquer um dos comandos a seguir na raiz do diretório local do projeto.
Comando | Descrição |
---|---|
firebase emulators:start --only hosting | Emula o conteúdo e a configuração do Hosting do site de Hosting padrão em uma URL hospedada localmente |
firebase emulators:start --only hosting: TARGET_NAME | Emula o conteúdo e a configuração do Hosting do site de Hosting especificado em um URL hospedado localmente |
firebase hosting:channel:deploy \ | Implanta o conteúdo e a configuração do Hosting do site padrão do Hosting em um URL de visualização |
firebase hosting:channel:deploy \ | Implanta o conteúdo e a configuração do Hosting do site do Hosting especificado em um URL de visualização |
firebase deploy --only hosting | Implanta o conteúdo e a configuração do Hosting no canal ativo de todos os sites do Hosting configurados em firebase.json |
firebase deploy --only hosting: TARGET_NAME | Implanta o conteúdo e a configuração do Hosting no canal ativo do site do Hosting especificado |
Comando | Descrição |
---|---|
(não recomendado; use emulators:start em vez disso)firebase serve --only hosting | Fornece o conteúdo e a configuração do Hosting do site de Hosting padrão em uma URL hospedada localmente |
(não recomendado; use emulators:start em vez disso)firebase serve --only hosting: TARGET_NAME | Exibe o conteúdo e a configuração do Hosting do site de Hosting especificado em um URL hospedado localmente |