Implantar destinos

Destinos de implantação são identificadores de nome abreviado, definidos por você, para recursos no projeto do Firebase, como um site do Hosting com ativos estáticos exclusivos ou um grupo de instâncias do Realtime Database que compartilham as mesmas regras de segurança.

Os destinos de implantação são úteis quando você tem vários sites do Hosting, vários buckets do Cloud Storage ou várias instâncias do Realtime Database. Com esses identificadores, a Firebase CLI pode implantar configurações em um recurso ou grupo de recursos específicos do Firebase no seu projeto, incluindo:

  • configuração de hospedagem para cada um dos seus sites do Hosting
  • recursos estáticos do diretório do seu projeto para cada um dos seus sites do Hosting
  • regras de segurança compartilhadas por várias instâncias do Realtime Database ou vários buckets do Cloud Storage

Siga estas etapas para configurar um destino de implantação:

  1. Aplique um TARGET_NAME ao recurso ou grupo de recursos do Firebase.
  2. No arquivo firebase.json, faça referência ao TARGET_NAME associado ao definir as configurações de cada recurso ou grupo de recursos.

Quando você executa os comandos da CLI do Firebase , como firebase deploy, a CLI do Firebase associa cada TARGET_NAME aos recursos associados do Firebase. Em seguida, a CLI informa as configurações de cada recurso ao seu projeto do Firebase.

Configurar destinos de implantação para os recursos do Firebase

Com a CLI do Firebase, aplique um TARGET_NAME (identificador de nome abreviado definido por você) a um recurso ou um grupo de recursos do Firebase. O Firebase é compatível com destinos de implantação para os seguintes elementos:

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.

Configurar destinos de implantação para o Hosting

Para criar um destino de implantação e aplicar um TARGET_NAME a um site do Hosting, execute o seguinte comando da CLI:

firebase target:apply TYPE TARGET_NAME RESOURCE_IDENTIFIER

Em que os parâmetros são:

  • TYPE: o tipo de recurso relevante do Firebase

    • Para sites do Firebase Hosting, use hosting.
  • TARGET_NAME: um nome exclusivo para o site do Hosting em que as implantações serão realizadas

  • RESOURCE_IDENTIFIER: o SITE_ID do site do Hosting conforme listado no seu projeto do Firebase

Por exemplo, se você criou dois sites (myapp-blog e myapp-app) no projeto do Firebase, pode aplicar um TARGET_NAME exclusivo (blog e app, respectivamente) para cada site executando os seguintes comandos:

firebase target:apply hosting blog myapp-blog
firebase target:apply hosting app myapp-app

Configurar destinos de implantação para o Cloud Storage ou o Realtime Database

Para criar um destino de implantação e aplicar um TARGET_NAME a um conjunto de recursos do Cloud Storage ou do Realtime Database, execute o seguinte comando da CLI:

firebase target:apply TYPE TARGET_NAME RESOURCE-1_IDENTIFIER RESOURCE-2_IDENTIFIER ...

Em que os parâmetros são:

  • TYPE: o tipo de recurso relevante do Firebase

    • Para buckets do Cloud Storage, use storage.
    • Para instâncias do Realtime Database, use database.
  • TARGET_NAME: um nome exclusivo para o recurso ou grupo que compartilham regras de segurança

  • RESOURCE_IDENTIFIER: os identificadores dos recursos conforme listados no seu projeto do Firebase, como nomes de bucket de armazenamento ou IDs de instâncias de banco de dados, que compartilham as mesmas regras de segurança

Por exemplo, você pode aplicar TARGET_NAME de main a um grupo de três buckets regionais do Cloud Storage que compartilham as mesmas regras de segurança executando o seguinte comando:

firebase target:apply storage main myproject.appspot.com myproject-eu myproject-ja

Observe que myproject.appspot.com é o identificador do bucket padrão, enquanto myproject-eu e myproject-ja são dois buckets adicionais criados no projeto do Firebase.

Configurar seu arquivo firebase.json para usar destinos de implantação

Após configurar destinos de implantação para seus recursos do Firebase, faça referência a cada TARGET_NAME aplicado no arquivo de configuração firebase.json:

  1. Crie uma matriz de objetos de configuração para cada recurso do Firebase TYPE (hosting, storage ou database).
  2. Nas matrizes, especifique o target (usando o TARGET_NAME) e defina as configurações do recurso ou grupo de recursos associados do Firebase.

Continuando com os exemplos acima, em que seu projeto do Firebase tem dois sites do Hosting e três buckets do Cloud Storage que compartilham as mesmas regras de segurança, seu arquivo firebase.json seria assim:

{
  "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
    }
  ]
}

{
  "storage": [ {
      "target": "main",  // "main" is the applied TARGET_NAME for the group of Cloud Storage buckets
      "rules": "storage.main.rules"  // the file that contains the shared security rules
    }
  ]
}

Se você tiver várias configurações para seus recursos, poderá criar vários destinos de implantação e especificar cada um deles no arquivo firebase.json. Todos os recursos associados serão implantados juntos ao executar o comando firebase deploy.

Gerenciar destinos de implantação

As configurações dos destinos de implantação são armazenadas no arquivo .firebaserc no diretório do projeto. Você pode gerenciar os destinos de implantação do seu projeto ao executar qualquer um dos seguintes comandos da raiz do diretório do seu projeto.

Comando Descrição
firebase target Lista os destinos de implantação para o diretório do seu projeto atual.
firebase target:remove \
TYPE RESOURCE_IDENTIFIER
Remove um recurso do destino ao qual foi atribuído.
firebase target:clear \
TYPE TARGET_NAME
Remove todos os recursos ou o site do Hosting do destino especificado

Os comandos target:remove e target:clear atualizam automaticamente as configurações de destino de implantação no arquivo .firebaserc no diretório do projeto.

Testar localmente antes de implantar

Execute qualquer um dos comandos a seguir por meio da raiz do diretório do seu projeto.

Comando Descrição
firebase emulators:start Emula todos os recursos configurados no diretório do projeto
firebase emulators:start \
--only hosting:TARGET_NAME
Emula apenas o conteúdo e a configuração do Hosting do site especificado
firebase emulators:start \
--only storage:TARGET_NAME
Emula apenas o arquivo de regras para o destino especificado do Cloud Storage
firebase emulators:start \
--only database:TARGET_NAME
Emula apenas o arquivo de regras para o destino especificado do Realtime Database

Saiba mais sobre como configurar e usar o Pacote do emulador local do Firebase.

Implantar recursos específicos do Firebase

Execute qualquer um dos comandos a seguir por meio da raiz do diretório do seu projeto.

Comando Descrição
firebase deploy Cria uma versão de todos os recursos implantáveis no diretório do seu projeto
firebase deploy \
--only hosting:TARGET_NAME
Implanta apenas o conteúdo e a configuração do Hosting do site especificado para o canal atual do site
firebase hosting:channel:deploy CHANNEL_ID \
--only TARGET_NAME
Implanta apenas o conteúdo e a configuração do Hosting do site especificado para o canal de visualização do site
firebase deploy \
--only storage:TARGET_NAME
Implanta apenas o arquivo de regras para o destino especificado do Cloud Storage
firebase deploy \
--only database:TARGET_NAME
Implanta apenas o arquivo de regras para o destino especificado do Realtime Database