Experts in Angular

Ambiente de DesenvolvimentoAngular CLI: Configurando Ambientes de Aplicação: Adaptando sua Nave a Diferentes Galáxias
Seja em desenvolvimento, teste ou produção, o Angular CLI te dá o controle total para configurar sua nave espacial Angular para cada missão.

Angular CLI: Configurando Ambientes de Aplicação: Adaptando sua Nave a Diferentes Galáxias

Em nossa jornada pelo universo do Angular CLI, exploramos como construir e implantar sua aplicação. Agora, vamos desvendar um recurso essencial para adaptar sua nave espacial a diferentes galáxias: a configuração de ambientes de aplicação.

Imagine que sua aplicação Angular é uma nave versátil, capaz de viajar por diferentes mundos. Cada mundo (ambiente) possui suas próprias características e desafios, como diferentes configurações de servidor, APIs e recursos. Para garantir que sua nave funcione perfeitamente em cada ambiente, você precisa ajustá-la de acordo com as especificidades de cada local.

O Angular CLI permite que você defina diferentes configurações de build para sua aplicação, cada uma com seus próprios valores padrão para opções como URLs de API, chaves de API e outros parâmetros específicos do ambiente. Com isso, você pode construir e executar sua aplicação em diferentes ambientes, como desenvolvimento, teste e produção, sem precisar modificar o código-fonte.

Configurações do Angular CLI: Personalizando sua Nave para Cada Missão

A versatilidade é uma característica essencial para qualquer nave espacial que se preze. Assim como uma nave precisa se adaptar a diferentes condições e desafios em cada planeta que visita, sua aplicação Angular também precisa se ajustar a diferentes ambientes e cenários de uso.

O Angular CLI, seu fiel engenheiro de bordo, oferece um sistema flexível de configurações que permite personalizar o comportamento da sua aplicação de acordo com o ambiente em que ela está sendo executada. Seja em desenvolvimento, teste ou produção, o Angular CLI te dá o controle total para configurar sua nave espacial Angular para cada missão.

Angular também precisa se ajustar a diferentes ambientes e cenários de uso

Objeto de Configurações: O Coração da Personalização

No arquivo angular.json, que funciona como o painel de controle da sua nave, você encontrará o objeto configurations. Ele é a chave para personalizar as opções de cada construtor (builder) do Angular CLI, como build, serve e test, de acordo com a configuração escolhida na linha de comando.

{
  "projects": {
    "my-app": {
      "architect": {
        "build": {
          "builder": "@angular-devkit/build-angular:browser",
          "options": {
            "sourceMap": false // Desabilitar source maps por padrão
          },
          "configurations": {
            "debug": {
              "sourceMap": true // Habilitar source maps na configuração 'debug'
            }
          }
        },
        // ... outras configurações de builders
      }
    }
  }
}

Neste exemplo, estamos configurando o builder build para desabilitar a geração de source maps por padrão.
No entanto, na configuração debug, habilitamos os source maps para facilitar a depuração durante o desenvolvimento.

O Que São Source Maps?

Source maps são arquivos que mapeiam o código JavaScript gerado de volta para o código TypeScript original. Eles funcionam como um guia, permitindo que você navegue pelo código original enquanto depura sua aplicação no navegador.

Quando você depura sua aplicação no navegador, o depurador utiliza o source map para exibir o código TypeScript original, permitindo que você defina pontos de interrupção, inspecione variáveis e execute o código passo a passo.

Embora os source maps sejam essenciais para o desenvolvimento, eles podem representar um risco de segurança se forem expostos em produção. Os source maps revelam o código-fonte original da sua aplicação, o que pode ser explorado por atacantes.

Por isso, é importante desabilitar os source maps em produção e garantir que eles não sejam acessíveis publicamente. Você pode configurar seu servidor web para bloquear o acesso aos arquivos de source map ou removê-los do servidor após a implantação.

Escolhendo a Configuração: O Leme da Nave

Você pode escolher qual configuração utilizar ao executar um comando do Angular CLI usando a opção --configuration. Por exemplo, para construir sua aplicação em modo de depuração, execute:

ng build --configuration debug

Múltiplas Configurações: Combinando as Peças do Quebra-Cabeça

O Angular CLI permite que você especifique múltiplas configurações em um único comando, separando-as por vírgula. As configurações são aplicadas em ordem, e as opções conflitantes utilizarão o valor da última configuração especificada.

ng build --configuration debug,production,customer-facing

Neste exemplo, estamos aplicando as configurações debug, production e customer-facing em ordem. Se houver opções conflitantes entre as configurações, o valor da configuração customer-facing será utilizado.

Configurando Valores Padrão Específicos para cada Ambiente: Adaptando sua Nave a Diferentes Destinos

O @angular-devkit/build-angular:browser suporta substituições de arquivos, uma opção para substituir arquivos de origem antes de executar uma build.
Usar isso em combinação com --configuration fornece um mecanismo para configurar dados específicos do ambiente em sua aplicação.

Gerando Ambientes: Criando Diferentes Destinos para sua Nave

Para começar, utilize o comando ng generate environments para criar o diretório src/environments e configurar seu projeto para utilizar a substituição de arquivos.

ng generate environments

Esse comando criará três arquivos no diretório src/environments:

  • environment.ts: Contém as configurações padrão para o ambiente de produção.
  • environment.development.ts: Contém as configurações específicas para o ambiente de desenvolvimento.
  • environment.prod.ts: Contém as configurações específicas para o ambiente de produção.

O diretório src/environments/ do projeto conterá o arquivo de configuração base, environment.ts, que fornece a configuração padrão para produção. Você pode substituir os valores padrão para ambientes adicionais, como development e staging, em arquivos de configuração específicos para cada ambiente.

Exemplo de Estrutura de Arquivos de Ambiente
my-app/src/environments
├── environment.development.ts
├── environment.staging.ts
└── environment.ts

Configurando o Ambiente Padrão: O Ponto de Partida da Jornada

O arquivo environment.ts é o ponto de partida da sua jornada. Ele contém as configurações padrão que serão utilizadas quando você não especificar um ambiente na linha de comando. Por exemplo:

// environment.ts
export const environment = {
  production: true,
  apiUrl: 'https://api.minhaaplicacao.com'
};

Nesse exemplo, definimos que o ambiente padrão é de produção (production: true) e que a URL da API é https://api.minhaaplicacao.com. Você pode adicionar outras variáveis de ambiente conforme necessário.

Configurando Ambientes Específicos: Adaptando a Nave a Diferentes Planetas

Os arquivos environment.development.ts e environment.prod.ts permitem que você personalize as configurações para cada ambiente. Por exemplo, no ambiente de desenvolvimento, você pode usar uma URL de API local e desabilitar o modo de produção:

// environment.development.ts
export const environment = {
  production: false,
  apiUrl: 'http://localhost:3000/api'
};

No ambiente de produção, você pode usar a URL da API de produção e habilitar o modo de produção:

// environment.prod.ts
export const environment = {
  production: true,
  apiUrl: 'https://api.minhaaplicacao.com'
};

Utilizando Variáveis de Ambiente na sua Aplicação: Navegando com Segurança em Diferentes Terrenos

Após configurar ambientes específicos para sua aplicação Angular, é hora de aprender a utilizá-los de forma eficiente e segura. O Angular CLI, como um navegador experiente, te guia por esse processo, garantindo que sua nave espacial esteja sempre adaptada ao ambiente em que se encontra.

Importando as Configurações: O Mapa da Jornada

Para utilizar as configurações de ambiente definidas em src/environments, seus componentes e serviços Angular devem importar o arquivo environment.ts:

import { environment } from './environments/environment';

Essa importação é fundamental para que os comandos ng build e ng serve possam encontrar as configurações corretas para cada ambiente.

Acessando as Variáveis de Ambiente: O Guia de Navegação

Com o arquivo environment.ts importado, você pode acessar as variáveis de ambiente definidas em cada configuração.

import { environment } from '../environments/environment';

// Busca dados de 'http://my-prod-url' em produção e 'http://my-dev-url' em desenvolvimento.
fetch(environment.apiUrl);

Neste exemplo, a variável environment.apiUrl conterá a URL da API correta para o ambiente em que a aplicação está sendo executada.

Substituição de Arquivos: O Mecanismo de Adaptação

O arquivo de configuração principal do CLI, angular.json, contém uma seção fileReplacements na configuração para cada alvo de build, que permite substituir qualquer arquivo no programa TypeScript por uma versão específica para o alvo.
Isso é útil para incluir código ou variáveis específicos do alvo em uma build que visa um ambiente específico, como produção ou staging.

Por padrão, nenhum arquivo é substituído; no entanto, ng generate environments configura essa substituição automaticamente.
Você pode alterar ou adicionar substituições de arquivos para alvos de build específicos editando diretamente a configuração do angular.json.

"configurations": {
  "development": {
    "fileReplacements": [
      {
        "replace": "src/environments/environment.ts",
        "with": "src/environments/environment.development.ts"
      }
    ],
    ...
  },
  "production": {
    "fileReplacements": [
      {
        "replace": "src/environments/environment.ts",
        "with": "src/environments/environment.prod.ts"
      }
    ],
    ...
  },
  "staging": {
    "fileReplacements": [
      {
        "replace": "src/environments/environment.ts",
        "with": "src/environments/environment.staging.ts"
      }
    ],
    ...
  }
}

Isso significa que quando você builda sua configuração de desenvolvimento com ng build --configuration development, o arquivo src/environments/environment.ts é substituído pela versão específica do alvo, src/environments/environment.development.ts.

Adicionando um Ambiente de Staging

Para adicionar um ambiente de staging, crie uma cópia do arquivo src/environments/environment.ts chamada src/environments/environment.staging.ts e adicione uma configuração staging ao angular.json:

"configurations": {
  "development": { ... },
  "production": { ... },
  "staging": {
    "fileReplacements": [
      {
        "replace": "src/environments/environment.ts",
        "with": "src/environments/environment.staging.ts"
      }
    ],
    ...
  }
}

Você pode adicionar mais opções de configuração para esse ambiente alvo conforme necessário. Qualquer opção que sua build suporta pode ser sobrescrita em uma configuração de alvo de build.

Para buildar usando a configuração de staging, execute o seguinte comando:

ng build --configuration staging

Configurando o Ambiente de Desenvolvimento com ng serve: Personalizando o Campo de Treinamento

Por padrão, o comando ng serve utiliza o ambiente de desenvolvimento (development). No entanto, você pode personalizar essa configuração no arquivo angular.json, definindo a opção buildTarget na configuração do serve:

"serve": {
  "builder": "@angular-devkit/build-angular:dev-server",
  "options": { ... },
  "configurations": {
    "development": {
      // Use the `development` configuration of the `build` target.
      "buildTarget": "my-app:build:development"
    },
    "production": {
      // Use the `production` configuration of the `build` target.
      "buildTarget": "my-app:build:production"
    }
  },
  "defaultConfiguration": "development"
}

A opção defaultConfiguration especifica qual configuração é usada por padrão. Quando defaultConfiguration não está definida, options são usadas diretamente sem modificação.

Com essa configuração, você pode testar sua aplicação localmente utilizando diferentes configurações de build, simulando o comportamento em diferentes ambientes.

Conclusão: Angular CLI – O Mestre da Adaptação em Mundos Desconhecidos

Com o Angular CLI, você tem o controle total para personalizar as configurações da sua aplicação em cada ambiente, garantindo um desempenho otimizado e uma experiência de usuário impecável em qualquer lugar do universo.

Exploramos o objeto configurations no arquivo angular.json, que funciona como o painel de controle da sua nave, permitindo definir valores padrão específicos para cada ambiente. Aprendemos a criar arquivos de configuração personalizados para cada ambiente, como environment.ts e environment.prod.ts, e a utilizar as variáveis de ambiente em nossa aplicação.

Na próxima parte, vamos abordar os builders do Angular CLI e como utilizá-los para otimizar seus fluxos de trabalho de desenvolvimento. Fique atento para mais insights e práticas recomendadas sobre o uso do Angular