Referência CLI
A Referência CLI do Angular (Command Line Interface) é uma ferramenta poderosa que automatiza tarefas complexas no desenvolvimento de aplicações modernas baseadas em componentes. Com o Angular CLI, os desenvolvedores podem gerar componentes, módulos, serviços, pipes e muito mais com comandos simples, mantendo consistência e eficiência no código. Essa automação é crucial em aplicações SPA (Single Page Applications), onde a escalabilidade e a manutenção são fundamentais.
O CLI é usado em todas as fases do ciclo de vida do desenvolvimento Angular: desde a criação de novos projetos com ng new
, passando pela geração de componentes com ng generate component
, até a compilação e deploy com ng build
e ng deploy
. Ele também gerencia o fluxo de dados e o estado do aplicativo ao integrar estruturas modulares e serviços injetáveis.
O leitor aprenderá como o CLI auxilia na arquitetura baseada em componentes, na otimização de desempenho e na manutenção do fluxo de dados entre componentes e serviços. Em um contexto de aplicações modernas, dominar o CLI significa dominar a base operacional do ecossistema Angular — permitindo criar, testar, otimizar e publicar projetos empresariais com alto desempenho e segurança.
Exemplo Básico
typescript// Exemplo simples demonstrando o uso do Angular CLI para criar um componente funcional
// Crie um novo projeto Angular com: ng new exemplo-cli
// Gere um componente com: ng generate component contador
import { Component } from '@angular/core';
@Component({
selector: 'app-contador',
template: ` <h2>Contador CLI Angular</h2> <p>Valor atual: {{ contador }}</p> <button (click)="incrementar()">Incrementar</button> <button (click)="decrementar()">Decrementar</button>
`,
styles: [`h2 { color: #1976d2; } button { margin: 5px; }`]
})
export class ContadorComponent {
contador: number = 0;
incrementar() {
this.contador++;
}
decrementar() {
this.contador--;
}
}
// Adicione o seletor <app-contador></app-contador> no template principal app.component.html
// Inicie o servidor com: ng serve
O código acima demonstra um exemplo prático gerado pelo Angular CLI. O comando ng generate component contador
cria automaticamente a estrutura completa de um componente, incluindo arquivos .ts
, .<a href="/pt/html/" class="smart-link">html</a>
, .<a href="/pt/css/" class="smart-link">css</a>
e .spec.ts
. O componente ContadorComponent
ilustra o conceito de estado e fluxo de dados dentro de um componente Angular, utilizando a propriedade contador
e métodos para manipulá-la.
A injeção de eventos (click)
demonstra o binding unidirecional, essencial na arquitetura baseada em componentes. O Angular CLI também garante que os arquivos sejam corretamente registrados no módulo principal (app.module.ts
), evitando erros manuais de configuração.
Essa abordagem elimina a necessidade de "prop drilling" (passagem excessiva de dados entre componentes) e previne re-renderizações desnecessárias, pois o Angular utiliza detecção de mudanças eficiente baseada em seu ciclo de vida.
No desenvolvimento real, esse tipo de componente seria expandido para interagir com serviços injetáveis (@Injectable
) para persistir estado global — um padrão recomendado ao trabalhar com gerenciamento de estado e reatividade. O Angular CLI facilita toda essa integração, permitindo foco total na lógica do aplicativo e não em sua configuração estrutural.
Exemplo Prático
typescript// Exemplo mais avançado: gerenciamento de estado e ciclo de vida com CLI
// Gere um serviço: ng generate service contador
import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
@Injectable({ providedIn: 'root' })
export class ContadorService {
private valor = new BehaviorSubject<number>(0);
contador$ = this.valor.asObservable();
incrementar() {
this.valor.next(this.valor.value + 1);
}
decrementar() {
this.valor.next(this.valor.value - 1);
}
}
// Componente que consome o serviço:
import { Component, OnInit, OnDestroy } from '@angular/core';
import { Subscription } from 'rxjs';
import { ContadorService } from './contador.service';
@Component({
selector: 'app-contador-avancado',
template: ` <h2>Contador Avançado CLI</h2> <p>Valor Atual: {{ valor }}</p> <button (click)="add()">+</button> <button (click)="remove()">-</button>
`
})
export class ContadorAvancadoComponent implements OnInit, OnDestroy {
valor = 0;
sub!: Subscription;
constructor(private contadorService: ContadorService) {}
ngOnInit() {
this.sub = this.contadorService.contador$.subscribe(v => this.valor = v);
}
add() {
this.contadorService.incrementar();
}
remove() {
this.contadorService.decrementar();
}
ngOnDestroy() {
this.sub.unsubscribe();
}
}
Advanced Angular Implementation
typescript// Exemplo empresarial: integração CLI + módulo compartilhado + otimização
// Criação de módulo compartilhado com CLI: ng generate module shared
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { ContadorAvancadoComponent } from '../contador-avancado/contador-avancado.component';
@NgModule({
declarations: [ContadorAvancadoComponent],
imports: [CommonModule],
exports: [ContadorAvancadoComponent]
})
export class SharedModule {}
// Registro no módulo raiz:
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';
import { SharedModule } from './shared/shared.module';
@NgModule({
declarations: [AppComponent],
imports: [BrowserModule, SharedModule],
bootstrap: [AppComponent]
})
export class AppModule {}
Boas práticas do Angular CLI incluem o uso de módulos compartilhados (SharedModule
) para promover reuso de componentes e reduzir duplicação. O CLI automatiza importações e configurações, garantindo consistência e modularidade.
Erros comuns a evitar incluem: mutação direta de estado (que quebra o padrão reativo), recarregamentos desnecessários de componentes e dependências cíclicas entre módulos. O CLI fornece ferramentas de linting e testes (ng lint
, ng test
) que ajudam a detectar esses problemas cedo.
Para otimização de desempenho, utilize ng build --prod
para produção, aproveitando minificação e tree-shaking. O CLI também permite auditorias de segurança e compatibilidade com ng update
, mantendo o projeto atualizado.
A depuração em tempo real pode ser feita com ng serve --open
e inspeção do DevTools, permitindo análise de ciclo de vida (ngOnInit
, ngOnDestroy
) e do fluxo de dados assíncronos via RxJS.
Segurança é outro pilar — evite injeção de HTML dinâmico, e use DomSanitizer
quando necessário. O CLI ajuda a estruturar projetos seguindo as diretrizes do Angular Security Guide, tornando mais fácil aplicar políticas de segurança consistentes.
📊 Referência Completa
Angular Element/Method | Description | Syntax | Example | Notes |
---|---|---|---|---|
ng new | Cria novo projeto Angular | ng new app-name | ng new minhaApp | Inclui configuração inicial |
ng generate component | Gera novo componente | ng generate component nome | ng g c dashboard | Automatiza estrutura MVC |
ng generate service | Cria novo serviço | ng g s nome | ng g s auth | Escopo root por padrão |
ng build | Compila aplicação | ng build [options] | ng build --prod | Otimiza código |
ng serve | Inicia servidor local | ng serve [options] | ng serve --open | Ideal para desenvolvimento |
ng lint | Analisa código | ng lint | ng lint | Usa regras TSLint/ESLint |
ng test | Executa testes unitários | ng test | ng test | Usa Karma + Jasmine |
ng e2e | Executa testes end-to-end | ng e2e | ng e2e | Usa Protractor |
ng add | Adiciona pacotes | ng add pacote | ng add @angular/material | Configuração automática |
ng update | Atualiza dependências | ng update | ng update @angular/core | Mantém compatibilidade |
ng deploy | Publica projeto | ng deploy | ng deploy | Depende do adaptador configurado |
ng analytics | Gerencia telemetria | ng analytics off | ng analytics on | Privacidade do usuário |
ng config | Configura parâmetros | ng config key value | ng config cli.warnings.versionMismatch false | Gerencia opções CLI |
ng doc | Abre documentação Angular | ng doc topic | ng doc router | Acesso rápido à doc oficial |
ng version | Mostra versões instaladas | ng version | ng v | Diagnóstico rápido |
ng extract-i18n | Extrai mensagens i18n | ng extract-i18n | ng xi18n | Suporte multilíngue |
ng generate module | Cria novo módulo | ng g m nome | ng g m shared | Modularização |
ng cache clean | Limpa cache CLI | ng cache clean | ng cache clean | Melhora desempenho |
ng generate pipe | Cria pipe | ng g p nome | ng g p capitalize | Transforma dados |
ng completion | Habilita autocompletar bash | ng completion | ng completion | Facilita CLI |
📊 Complete Angular Properties Reference
Property | Values | Default | Description | Angular Support |
---|---|---|---|---|
strict | true/false | true | Modo estrito de compilação | v12+ |
inlineStyle | true/false | false | Inclui CSS inline | v10+ |
inlineTemplate | true/false | false | Inclui template inline | v10+ |
skipTests | true/false | false | Pula geração de testes | v8+ |
routing | true/false | false | Adiciona módulo de roteamento | v9+ |
style | css/scss/sass | css | Define estilo padrão | v8+ |
prefix | string | app | Define prefixo do seletor | v8+ |
skipInstall | true/false | false | Evita instalação inicial | v8+ |
packageManager | npm/yarn/pnpm | npm | Gerencia dependências | v11+ |
strictTemplates | true/false | true | Verificação de template | v13+ |
minimal | true/false | false | Cria app minimalista | v14+ |
standalone | true/false | false | Habilita componentes standalone | v15+ |
Resumo e próximos passos em Angular
Aprender a usar o Angular CLI é essencial para dominar o desenvolvimento Angular moderno. Ele oferece automação, padronização e eficiência, permitindo que os desenvolvedores se concentrem na lógica de negócios e não na configuração manual.
Os principais aprendizados incluem como gerar e organizar componentes, serviços e módulos, compreender o fluxo de dados e aplicar boas práticas de performance e segurança.
Como próximos passos, recomenda-se estudar tópicos como Lazy Loading, Standalone Components e State Management (NgRx). Aplicar o conhecimento do CLI em projetos reais é a melhor forma de consolidar habilidades.
Para aprofundar-se, consulte a documentação oficial do Angular e explore ferramentas complementares como Angular DevTools
e Schematics
para criar automações personalizadas dentro do CLI.
🧠 Teste Seu Conhecimento
Teste Seu Conhecimento
Desafie-se com este questionário interativo e veja o quão bem você entende o tópico
📝 Instruções
- Leia cada pergunta cuidadosamente
- Selecione a melhor resposta para cada pergunta
- Você pode refazer o quiz quantas vezes quiser
- Seu progresso será mostrado no topo