Configurações

Estrutura de arquivos do workspace e projeto

Você desenvolve aplicações no contexto de um workspace Angular. Um workspace contém os arquivos para um ou mais projetos. Um projeto é o conjunto de arquivos que compõem uma aplicação ou uma biblioteca compartilhável.

O comando ng new do Angular CLI cria um workspace.

ng new my-project

Quando você executa este comando, o CLI instala os pacotes npm Angular necessários e outras dependências em um novo workspace, com uma aplicação de nível raiz chamada my-project.

Por padrão, ng new cria uma aplicação esqueleto inicial no nível raiz do workspace, junto com seus testes end-to-end. O esqueleto é para uma aplicação de boas-vindas simples que está pronta para executar e fácil de modificar. A aplicação de nível raiz tem o mesmo nome do workspace, e os arquivos de origem residem na subpasta src/ do workspace.

Esse comportamento padrão é adequado para um estilo típico de desenvolvimento "multi-repo" onde cada aplicação reside em seu próprio workspace. Iniciantes e usuários intermediários são encorajados a usar ng new para criar um workspace separado para cada aplicação.

O Angular também suporta workspaces com múltiplos projetos. Este tipo de ambiente de desenvolvimento é adequado para usuários avançados que estão desenvolvendo bibliotecas compartilháveis, e para empresas que usam um estilo de desenvolvimento "monorepo", com um único repositório e configuração global para todos os projetos Angular.

Para configurar um workspace monorepo, você deve pular a criação da aplicação raiz. Veja Configurando para um workspace multi-projeto abaixo.

Arquivos de configuração do workspace

Todos os projetos dentro de um workspace compartilham uma configuração. O nível superior do workspace contém arquivos de configuração de todo o workspace, arquivos de configuração para a aplicação de nível raiz e subpastas para os arquivos de origem e teste da aplicação de nível raiz.

Arquivos de configuração do workspace Propósito
.editorconfig Configuração para editores de código. Veja EditorConfig.
.gitignore Especifica arquivos intencionalmente não rastreados que o Git deve ignorar.
README.md Documentação para o workspace.
angular.json Configuração do CLI para todos os projetos no workspace, incluindo opções de configuração para como construir, servir e testar cada projeto. Para detalhes, veja Configuração do Workspace Angular.
package.json Configura dependências de pacotes npm que estão disponíveis para todos os projetos no workspace. Veja documentação do npm para o formato e conteúdo específico deste arquivo.
package-lock.json Fornece informações de versão para todos os pacotes instalados em node_modules pelo cliente npm. Veja documentação do npm para detalhes.
src/ Arquivos de origem para o projeto de aplicação de nível raiz.
public/ Contém imagens e outros arquivos de assets para serem servidos como arquivos estáticos pelo servidor de desenvolvimento e copiados como estão quando você constrói sua aplicação.
node_modules/ Pacotes npm instalados para todo o workspace. Dependências node_modules de todo o workspace são visíveis para todos os projetos.
tsconfig.json A configuração base do TypeScript para projetos no workspace. Todos os outros arquivos de configuração herdam deste arquivo base. Para mais informações, veja a documentação relevante do TypeScript.

Arquivos de projeto de aplicação

Por padrão, o comando CLI ng new my-app cria uma pasta de workspace chamada "my-app" e gera um novo esqueleto de aplicação em uma pasta src/ no nível superior do workspace. Uma aplicação recém-gerada contém arquivos de origem para um módulo raiz, com um component raiz e template.

Quando a estrutura de arquivos do workspace está no lugar, você pode usar o comando ng generate na linha de comando para adicionar funcionalidade e dados à aplicação. Esta aplicação raiz inicial é o app padrão para comandos CLI (a menos que você altere o padrão após criar apps adicionais).

Para um workspace de aplicação única, a subpasta src do workspace contém os arquivos de origem (lógica da aplicação, dados e assets) para a aplicação raiz. Para um workspace multi-projeto, projetos adicionais na pasta projects contêm uma subpasta project-name/src/ com a mesma estrutura.

Arquivos de origem da aplicação

Arquivos no nível superior de src/ suportam a execução de sua aplicação. Subpastas contêm a origem da aplicação e configuração específica da aplicação.

Arquivos de suporte da aplicação Propósito
app/ Contém os arquivos de component nos quais a lógica e dados da sua aplicação são definidos. Veja detalhes abaixo.
favicon.ico Um ícone para usar para esta aplicação na barra de favoritos.
index.html A página HTML principal que é servida quando alguém visita seu site. O CLI adiciona automaticamente todos os arquivos JavaScript e CSS ao construir seu app, então você normalmente não precisa adicionar tags <script> ou <link> aqui manualmente.
main.ts O ponto de entrada principal para sua aplicação.
styles.css Estilos CSS globais aplicados a toda a aplicação.

Dentro da pasta src, a pasta app contém a lógica e dados do seu projeto. Components, templates e estilos Angular vão aqui.

Arquivos src/app/ Propósito
app.config.ts Define a configuração da aplicação que diz ao Angular como montar a aplicação. À medida que você adiciona mais providers ao app, eles devem ser declarados aqui.

Gerado apenas ao usar a opção --standalone.
app.component.ts Define o component raiz da aplicação, chamado AppComponent. A view associada a este component raiz se torna a raiz da hierarquia de views à medida que você adiciona components e services à sua aplicação.
app.component.html Define o template HTML associado ao AppComponent.
app.component.css Define a folha de estilos CSS para o AppComponent.
app.component.spec.ts Define um teste unitário para o AppComponent.
app.module.ts Define o módulo raiz, chamado AppModule, que diz ao Angular como montar a aplicação. Inicialmente declara apenas o AppComponent. À medida que você adiciona mais components ao app, eles devem ser declarados aqui.

Gerado apenas ao usar a opção --standalone false.
app.routes.ts Define a configuração de roteamento da aplicação.

Arquivos de configuração da aplicação

Arquivos de configuração específicos da aplicação para a aplicação raiz residem no nível raiz do workspace. Para um workspace multi-projeto, arquivos de configuração específicos do projeto estão na raiz do projeto, sob projects/project-name/.

Arquivos de configuração do TypeScript específicos do projeto herdam do tsconfig.json de todo o workspace.

Arquivos de configuração específicos da aplicação Propósito
tsconfig.app.json Configuração do TypeScript específica da aplicação, incluindo opções do compilador Angular.
tsconfig.spec.json Configuração do TypeScript para testes da aplicação.

Múltiplos projetos

Um workspace multi-projeto é adequado para uma organização que usa um único repositório e configuração global para múltiplos projetos Angular (o modelo "monorepo"). Um workspace multi-projeto também suporta desenvolvimento de bibliotecas.

Configurando para um workspace multi-projeto

Se você pretende ter múltiplos projetos em um workspace, você pode pular a geração inicial da aplicação quando criar o workspace, e dar ao workspace um nome único. O seguinte comando cria um workspace com todos os arquivos de configuração de todo o workspace, mas nenhuma aplicação de nível raiz.

ng new my-workspace --no-create-application

Você pode então gerar aplicações e bibliotecas com nomes que são únicos dentro do workspace.

cd my-workspaceng generate application my-appng generate library my-lib

Estrutura de arquivos de múltiplos projetos

A primeira aplicação explicitamente gerada vai para a pasta projects junto com todos os outros projetos no workspace. Bibliotecas recém-geradas também são adicionadas sob projects. Quando você cria projetos dessa forma, a estrutura de arquivos do workspace é totalmente consistente com a estrutura do arquivo de configuração do workspace, angular.json.

my-workspace/  ├── …                (arquivos de configuração de todo o workspace)  └── projects/        (aplicações e bibliotecas)      ├── my-app/      (uma aplicação explicitamente gerada)      │   └── …        (código e configuração específicos da aplicação)      └── my-lib/      (uma biblioteca gerada)          └── …        (código e configuração específicos da biblioteca)

Arquivos de projeto de biblioteca

Quando você gera uma biblioteca usando o CLI (com um comando como ng generate library my-lib), os arquivos gerados vão para a pasta projects/ do workspace. Para mais informações sobre criar suas próprias bibliotecas, veja Criando Bibliotecas.

Ao contrário de uma aplicação, uma biblioteca tem seu próprio arquivo de configuração package.json.

Sob a pasta projects/, a pasta my-lib contém o código da sua biblioteca.

Arquivos de origem da biblioteca Propósito
src/lib Contém a lógica e dados do seu projeto de biblioteca. Como um projeto de aplicação, um projeto de biblioteca pode conter components, services, módulos, diretivas e pipes.
src/public-api.ts Especifica todos os arquivos que são exportados da sua biblioteca.
ng-package.json Arquivo de configuração usado pelo ng-packagr para construir sua biblioteca.
package.json Configura dependências de pacotes npm que são requeridas para esta biblioteca.
tsconfig.lib.json Configuração do TypeScript específica da biblioteca, incluindo opções do compilador Angular.
tsconfig.lib.prod.json Configuração do TypeScript específica da biblioteca que é usada ao construir a biblioteca em modo de produção.
tsconfig.spec.json Configuração do TypeScript para os testes unitários da biblioteca.