Configurações

Configuração do workspace Angular

O arquivo angular.json no nível raiz de um workspace Angular fornece padrões de configuração para todo o workspace e específicos de projeto. Estes são usados pelas ferramentas de build e desenvolvimento fornecidas pelo Angular CLI. Os valores de caminho fornecidos na configuração são relativos ao diretório raiz do workspace.

Estrutura geral do JSON

No nível superior do angular.json, algumas propriedades configuram o workspace e uma seção projects contém as opções de configuração restantes por projeto. Você pode sobrescrever os padrões do Angular CLI definidos no nível do workspace através de padrões definidos no nível do projeto. Você também pode sobrescrever padrões definidos no nível do projeto usando a linha de comando.

As seguintes propriedades, no nível superior do arquivo, configuram o workspace.

Propriedades Detalhes
version A versão do arquivo de configuração.
newProjectRoot Caminho onde novos projetos são criados através de ferramentas como ng generate application ou ng generate library. O caminho pode ser absoluto ou relativo ao diretório do workspace. Padrão: projects
cli Um conjunto de opções que personalizam o Angular CLI. Consulte Opções de configuração do Angular CLI abaixo.
schematics Um conjunto de schematics que personalizam os padrões de opção do sub-comando ng generate para este workspace. Consulte schematics abaixo.
projects Contém uma subseção para cada aplicação ou biblioteca no workspace, com opções de configuração específicas do projeto.

A aplicação inicial que você cria com ng new app-name é listada em "projects":

Quando você cria um projeto de biblioteca com ng generate library, o projeto de biblioteca também é adicionado à seção projects.

HELPFUL: A seção projects do arquivo de configuração não corresponde exatamente à estrutura de arquivos do workspace.

  • A aplicação inicial criada por ng new está no nível superior da estrutura de arquivos do workspace.
  • Outras aplicações e bibliotecas ficam sob o diretório projects por padrão.

Para mais informações, consulte Estrutura de arquivos do workspace e projeto.

Opções de configuração do Angular CLI

As seguintes propriedades são um conjunto de opções que personalizam o Angular CLI.

Propriedade Detalhes Tipo de valor Valor padrão
analytics Compartilhar dados de uso anônimos com a equipe Angular. Um valor booleano indica se deve compartilhar dados ou não, enquanto uma string UUID compartilha dados usando um identificador pseudônimo. boolean | string false
cache Controla o cache persistente em disco usado pelos Angular CLI Builders. Opções de cache {}
schematicCollections Lista de coleções de schematics para usar em ng generate. string[] []
packageManager A ferramenta de gerenciador de pacotes preferida para usar. npm | cnpm | pnpm | yarn| bun npm
warnings Controla avisos do console específicos do Angular CLI. Opções de avisos {}

Opções de cache

Propriedade Detalhes Tipo de valor Valor padrão
enabled Configura se o cache em disco está habilitado para builds. boolean true
environment Configura em qual ambiente o cache em disco está habilitado.

_ ci habilita cache apenas em ambientes de integração contínua (CI).
_ local habilita cache apenas fora de ambientes CI.
* all habilita cache em todos os lugares.
local | ci | all local
path O diretório usado para armazenar resultados do cache. string .angular/cache

Opções de avisos

Propriedade Detalhes Tipo de valor Valor padrão
versionMismatch Mostra um aviso quando a versão global do Angular CLI é mais recente que a versão local. boolean true

Opções de configuração de projeto

As seguintes propriedades de configuração de nível superior estão disponíveis para cada projeto, em projects['project-name'].

Propriedade Detalhes Tipo de valor Valor padrão
root O diretório raiz para os arquivos deste projeto, relativo ao diretório do workspace. Vazio para a aplicação inicial, que reside no nível superior do workspace. string Nenhum (obrigatório)
projectType Um de "application" ou "library". Uma aplicação pode executar independentemente em um browser, enquanto uma biblioteca não pode. application | library Nenhum (obrigatório)
sourceRoot O diretório raiz para os arquivos fonte deste projeto. string ''
prefix Uma string que o Angular adiciona aos seletores ao gerar novos components, directives e pipes usando ng generate. Pode ser personalizada para identificar uma aplicação ou área de recurso. string 'app'
schematics Um conjunto de schematics que personalizam os padrões de opção do sub-comando ng generate para este projeto. Consulte a seção Schematics de geração. Consulte schematics {}
architect Padrões de configuração para targets de builder Architect para este projeto. Consulte Configurando targets de builder {}

Schematics

Angular schematics são instruções para modificar um projeto adicionando novos arquivos ou modificando arquivos existentes. Estes podem ser configurados mapeando o nome do schematic para um conjunto de opções padrão.

O "nome" de um schematic está no formato: <schematic-package>:<schematic-name>. Schematics para os sub-comandos ng generate padrão do Angular CLI são coletados no pacote @schematics/angular. Por exemplo, o schematic para gerar um component com ng generate component é @schematics/angular:component.

Os campos fornecidos no schema do schematic correspondem aos valores de argumentos de linha de comando permitidos e padrões para as opções do sub-comando do Angular CLI. Você pode atualizar seu arquivo de schema do workspace para definir um padrão diferente para uma opção de sub-comando. Por exemplo, para desabilitar standalone em ng generate component por padrão:

{  "projects": {    "my-app": {      "schematics": {        "@schematics/angular:component": {          "standalone": false        }      }    }  }}

Configurando builders CLI

Architect é a ferramenta que o Angular CLI usa para realizar tarefas complexas, como compilação e execução de testes. Architect é um shell que executa um builder especificado para realizar uma determinada tarefa, de acordo com uma configuração de target. Você pode definir e configurar novos builders e targets para estender o Angular CLI. Consulte Angular CLI Builders.

Builders e targets Architect padrão

O Angular define builders padrão para uso com comandos específicos, ou com o comando geral ng run. Os schemas JSON que definem as opções e padrões para cada um desses builders são coletados no pacote @angular-devkit/build-angular. Os schemas configuram opções para os seguintes builders.

Configurando targets de builder

A seção architect do angular.json contém um conjunto de targets Architect. Muitos dos targets correspondem aos comandos do Angular CLI que os executam. Outros targets podem ser executados usando o comando ng run, e você pode definir seus próprios targets.

Cada objeto target especifica o builder para esse target, que é o pacote npm para a ferramenta que o Architect executa. Cada target também tem uma seção options que configura opções padrão para o target, e uma seção configurations que nomeia e especifica configurações alternativas para o target. Consulte o exemplo em Target de build abaixo.

Propriedade Detalhes
build Configura padrões para opções do comando ng build. Consulte a seção Target de build para mais informações.
serve Sobrescreve padrões de build e fornece padrões extras de serve para o comando ng serve. Além das opções disponíveis para o comando ng build, adiciona opções relacionadas à execução da aplicação.
e2e Sobrescreve padrões de build para construir aplicações de teste end-to-end usando o comando ng e2e.
test Sobrescreve padrões de build para builds de teste e fornece padrões extras de execução de testes para o comando ng test.
lint Configura padrões para opções do comando ng lint, que realiza análise estática de código nos arquivos fonte do projeto.
extract-i18n Configura padrões para opções do comando ng extract-i18n, que extrai strings de mensagem localizadas do código fonte e gera arquivos de tradução para internacionalização.

HELPFUL: Todas as opções no arquivo de configuração devem usar camelCase, em vez de dash-case como usado na linha de comando.

Target de build

Cada target sob architect tem as seguintes propriedades:

Propriedade Detalhes
builder O builder CLI usado para criar este target na forma de <package-name>:<builder-name>.
options Opções padrão do target de build.
configurations Configurações alternativas para executar o target. Cada configuração define as opções padrão para aquele ambiente pretendido, sobrescrevendo o valor associado em options. Consulte Configurações alternativas de build abaixo.

Por exemplo, para configurar um build com otimizações desabilitadas:

{  "projects": {    "my-app": {      "architect": {        "build": {          "builder": "@angular/build:application",          "options": {            "optimization": false          }        }      }    }  }}

Configurações alternativas de build

O Angular CLI vem com duas configurações de build: production e development. Por padrão, o comando ng build usa a configuração production, que aplica várias otimizações de build, incluindo:

  • Empacotamento de arquivos
  • Minimização de espaços em branco excessivos
  • Remoção de comentários e código morto
  • Minificação de código para usar nomes curtos e alterados

Você pode definir e nomear configurações alternativas extras (como staging, por exemplo) apropriadas ao seu processo de desenvolvimento. Você pode selecionar uma configuração alternativa passando seu nome para a flag de linha de comando --configuration.

Por exemplo, para configurar um build onde a otimização está habilitada apenas para builds de produção (ng build --configuration production):

{  "projects": {    "my-app": {      "architect": {        "build": {          "builder": "@angular/build:application",          "options": {            "optimization": false          },          "configurations": {            "production": {              "optimization": true            }          }        }      }    }  }}

Você também pode passar mais de um nome de configuração como uma lista separada por vírgulas. Por exemplo, para aplicar ambas as configurações de build staging e french, use o comando ng build --configuration staging,french. Neste caso, o comando analisa as configurações nomeadas da esquerda para a direita. Se várias configurações alterarem a mesma configuração, o último valor definido é o final. Neste exemplo, se ambas as configurações staging e french definirem o caminho de saída, o valor em french seria usado.

Opções extras de build e teste

As opções configuráveis para um build padrão ou direcionado geralmente correspondem às opções disponíveis para os comandos ng build e ng test. Para detalhes dessas opções e seus valores possíveis, consulte a Referência do Angular CLI.

Propriedades de opções Detalhes
assets Um objeto contendo caminhos para assets estáticos para servir com a aplicação. Os caminhos padrão apontam para o diretório public do projeto. Consulte mais na seção Configuração de assets.
styles Um array de arquivos CSS para adicionar ao contexto global do projeto. O Angular CLI suporta importações CSS e todos os principais pré-processadores CSS. Consulte mais na seção Configuração de estilos e scripts.
stylePreprocessorOptions Um objeto contendo pares opção-valor para passar aos pré-processadores de estilo. Consulte mais na seção Configuração de estilos e scripts.
scripts Um objeto contendo arquivos JavaScript para adicionar à aplicação. Os scripts são carregados exatamente como se você os tivesse adicionado em uma tag <script> dentro do index.html. Consulte mais na seção Configuração de estilos e scripts.
budgets Tipo de orçamento de tamanho padrão e limites para toda ou partes da sua aplicação. Você pode configurar o builder para reportar um aviso ou erro quando a saída alcançar ou exceder um limite de tamanho. Consulte Configurar orçamentos de tamanho.
fileReplacements Um objeto contendo arquivos e suas substituições em tempo de compilação. Consulte mais em Configurar substituições de arquivo específicas do target.
index Um documento HTML base que carrega a aplicação. Consulte mais em Configuração de index.
security Um objeto contendo a chave autoCsp que pode ser definida como true ou false

Opções extras de serve

O servidor de desenvolvimento vem com seu próprio conjunto de opções que geralmente correspondem às opções disponíveis para o comando ng serve.

Propriedades de opções Detalhes
allowedHosts Um array de hosts aos quais o servidor de desenvolvimento responderá. Esta opção define a opção Vite de mesmo nome. Para mais detalhes consulte a documentação do vite

Valores de configuração complexos

As opções assets, index, outputPath, styles e scripts podem ter valores de caminho de string simples ou valores de objeto com campos específicos. As opções sourceMap e optimization podem ser definidas como um valor booleano simples. Elas também podem receber um valor complexo usando o arquivo de configuração.

As seções a seguir fornecem mais detalhes de como esses valores complexos são usados em cada caso.

Configuração de assets

Cada configuração de target build pode incluir um array assets que lista arquivos ou pastas que você deseja copiar como estão ao construir seu projeto. Por padrão, o conteúdo do diretório public/ é copiado.

Para excluir um asset, você pode removê-lo da configuração de assets.

Você pode configurar ainda mais os assets a serem copiados especificando assets como objetos, em vez de caminhos simples relativos à raiz do workspace. Um objeto de especificação de asset pode ter os seguintes campos.

Campos Detalhes
glob Um node-glob usando input como diretório base.
input Um caminho relativo à raiz do workspace.
output Um caminho relativo a outDir. Devido às implicações de segurança, o Angular CLI nunca escreve arquivos fora do caminho de saída do projeto.
ignore Uma lista de globs para excluir.
followSymlinks Permitir que padrões glob sigam diretórios de link simbólico. Isso permite que subdiretórios do link simbólico sejam pesquisados. Padrão: false.

Por exemplo, os caminhos de asset padrão podem ser representados em mais detalhes usando os seguintes objetos.

{  "projects": {    "my-app": {      "architect": {        "build": {          "builder": "@angular/build:application",          "options": {            "assets": [              {                "glob": "**/*",                "input": "src/assets/",                "output": "/assets/"              },              {                "glob": "favicon.ico",                "input": "src/",                "output": "/"              }            ]          }        }      }    }  }}

O exemplo a seguir usa o campo ignore para excluir certos arquivos no diretório de assets de serem copiados para o build:

{  "projects": {    "my-app": {      "architect": {        "build": {          "builder": "@angular/build:application",          "options": {            "assets": [              {                "glob": "**/*",                "input": "src/assets/",                "ignore": ["**/*.svg"],                "output": "/assets/"              }            ]          }        }      }    }  }}

Configuração de estilos e scripts

Uma entrada de array para as opções styles e scripts pode ser uma string de caminho simples, ou um objeto que aponta para um arquivo de ponto de entrada extra. O builder associado carrega esse arquivo e suas dependências como um bundle separado durante o build. Com um objeto de configuração, você tem a opção de nomear o bundle para o ponto de entrada, usando um campo bundleName.

O bundle é injetado por padrão, mas você pode definir inject como false para excluir o bundle da injeção. Por exemplo, os seguintes valores de objeto criam e nomeiam um bundle que contém estilos e scripts, e o excluem da injeção:

{  "projects": {    "my-app": {      "architect": {        "build": {          "builder": "@angular/build:application",          "options": {            "styles": [              {                "input": "src/external-module/styles.scss",                "inject": false,                "bundleName": "external-module"              }            ],            "scripts": [              {                "input": "src/external-module/main.js",                "inject": false,                "bundleName": "external-module"              }            ]          }        }      }    }  }}

Opções de pré-processador de estilo

No Sass, você pode fazer uso do recurso includePaths tanto para estilos de component quanto globais. Isso permite adicionar caminhos base extras que são verificados para imports.

Para adicionar caminhos, use a opção stylePreprocessorOptions:

{  "projects": {    "my-app": {      "architect": {        "build": {          "builder": "@angular/build:application",          "options": {            "stylePreprocessorOptions": {              "includePaths": [                "src/style-paths"              ]            }          }        }      }    }  }}

Arquivos nesse diretório, como src/style-paths/_variables.scss, podem ser importados de qualquer lugar em seu projeto sem a necessidade de um caminho relativo:

// src/app/app.component.scss// Um caminho relativo funciona@import '../style-paths/variables';// Mas agora isso também funciona@import 'variables';

HELPFUL: Você também precisa adicionar quaisquer estilos ou scripts ao builder test se precisar deles para testes unitários. Consulte também Usando bibliotecas globais de runtime dentro da sua aplicação.

Configuração de otimização

A opção optimization pode ser um booleano ou um objeto para configuração mais refinada. Esta opção habilita várias otimizações da saída do build, incluindo:

  • Minificação de scripts e estilos
  • Tree-shaking
  • Eliminação de código morto
  • Inlining de CSS crítico
  • Inlining de fontes

Várias opções podem ser usadas para refinar a otimização de uma aplicação.

Opções Detalhes Tipo de valor Valor padrão
scripts Habilita otimização da saída de scripts. boolean true
styles Habilita otimização da saída de estilos. boolean | Opções de otimização de estilos true
fonts Habilita otimização para fontes. Isso requer acesso à internet. boolean | Opções de otimização de fontes true

Opções de otimização de estilos

Opções Detalhes Tipo de valor Valor padrão
minify Minifica definições CSS removendo espaços em branco e comentários extrâneos, mesclando identificadores e minimizando valores. boolean true
inlineCritical Extrai e incorpora definições CSS críticas para melhorar a First Contentful Paint. boolean true
removeSpecialComments Remove comentários em CSS global que contém @license ou @preserve ou que começa com //! ou /*!. boolean true

Opções de otimização de fontes

Opções Detalhes Tipo de valor Valor padrão
inline Reduz requisições de bloqueio de renderização incorporando definições CSS de Google Fonts e Adobe Fonts externas no arquivo HTML index da aplicação. Isso requer acesso à internet. boolean true

Você pode fornecer um valor como o seguinte para aplicar otimização a um ou outro:

{  "projects": {    "my-app": {      "architect": {        "build": {          "builder": "@angular/build:application",          "options": {            "stylePreprocessorOptions": {              "includePaths": [                "src/style-paths"              ]            }          }        }      }    }  }}

Configuração de source map

A opção de builder sourceMap pode ser um booleano ou um objeto para configuração mais refinada para controlar os source maps de uma aplicação.

Opções Detalhes Tipo de valor Valor padrão
scripts Gera source maps para todos os scripts. boolean true
styles Gera source maps para todos os estilos. boolean true
vendor Resolve source maps de pacotes vendor. boolean false
hidden Omite link para sourcemaps do JavaScript de saída. boolean false
sourcesContent Gera conteúdo fonte original para arquivos dentro dos source maps. boolean true

O exemplo abaixo mostra como alternar um ou mais valores para configurar as saídas de source map:

{  "projects": {    "my-app": {      "architect": {        "build": {          "builder": "@angular/build:application",          "options": {            "sourceMap": {              "scripts": true,              "styles": false,              "hidden": true,              "vendor": true            }          }        }      }    }  }}

HELPFUL: Ao usar source maps ocultos, os source maps não são referenciados no bundle. Estes são úteis se você deseja apenas source maps para mapear stack traces em ferramentas de relatório de erro sem aparecer nas ferramentas de desenvolvedor do browser. Observe que, embora hidden impeça que o source map seja vinculado no bundle de saída, seu processo de deployment deve cuidar para não servir os sourcemaps gerados em produção, caso contrário a informação ainda é vazada.

Source maps sem conteúdo de fontes

Você pode gerar source maps sem o campo sourcesContent, que contém o código fonte original. Isso permite que você faça deploy de source maps para produção para melhor relatório de erros com nomes de fonte originais enquanto protege seu código fonte de exposição.

Para excluir o conteúdo de fontes dos source maps, defina a opção sourcesContent como false:

{  "projects": {    "my-app": {      "architect": {        "build": {          "builder": "@angular/build:application",          "options": {            "sourceMap": {              "scripts": true,              "styles": true,              "sourcesContent": false            }          }        }      }    }  }}

Configuração de index

Configura a geração do HTML index da aplicação.

A opção index pode ser uma string ou um objeto para configuração mais refinada.

Ao fornecer o valor como uma string, o nome do arquivo do caminho especificado será usado para o arquivo gerado e será criado na raiz do caminho de saída configurado da aplicação.

Opções de index

Opções Detalhes Tipo de valor Valor padrão
input O caminho de um arquivo para usar para o HTML index gerado da aplicação. string Nenhum (obrigatório)
output O caminho de saída do arquivo HTML index gerado da aplicação. O caminho completo fornecido será usado e será considerado relativo ao caminho de saída configurado da aplicação. string index.html

Configuração do caminho de saída

A opção outputPath pode ser uma String que será usada como valor base ou um Objeto para configuração mais refinada.

Várias opções podem ser usadas para refinar a estrutura de saída de uma aplicação.

Opções Detalhes Tipo de valor Valor padrão
base Especifica o caminho de saída relativo à raiz do workspace. string
browser O nome do diretório de saída para seu build de browser está dentro do caminho de saída base. Isso pode ser servido com segurança aos usuários. string browser
server O nome do diretório de saída do seu build de servidor dentro do caminho base de saída. string server
media O nome do diretório de saída para seus arquivos de mídia localizados dentro do diretório de saída do browser. Esses arquivos de mídia são comumente referidos como recursos em arquivos CSS. string media