Cargando...

Referencia CLI

La Referencia CLI en Angular es una herramienta esencial que permite a los desarrolladores crear, mantener y optimizar aplicaciones de manera eficiente. CLI (Command Line Interface) facilita la automatización de tareas repetitivas como la generación de componentes, servicios, módulos y pipes, asegurando consistencia en la estructura del proyecto y acelerando el flujo de desarrollo.
El uso de la Referencia CLI es fundamental durante todo el ciclo de vida del desarrollo: desde la creación de un proyecto (ng new) y generación de componentes (ng generate component) hasta la construcción y despliegue de aplicaciones (ng build, ng deploy). CLI permite gestionar el estado de los componentes, aplicar patrones de flujo de datos y aprovechar el ciclo de vida de Angular, asegurando aplicaciones escalables y mantenibles.
El lector aprenderá cómo usar CLI para construir componentes reutilizables, manejar el estado de forma reactiva y optimizar la performance de la aplicación. En proyectos modernos de SPA, el conocimiento del CLI reduce errores comunes como prop drilling, renderizados innecesarios o mutaciones indebidas del estado, además de facilitar la integración con servicios y módulos compartidos.

Ejemplo Básico

typescript
TYPESCRIPT Code
// Ejemplo básico de Angular usando CLI para crear un componente funcional
// Crear proyecto: ng new ejemplo-cli
// Generar componente: ng generate component contador

import { Component } from '@angular/core';

@Component({
selector: 'app-contador',
template: `     <h2>Contador Angular CLI</h2>     <p>Valor actual: {{ 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--;
}
}

// Añadir <app-contador></app-contador> en app.component.html
// Ejecutar: ng serve

El ejemplo anterior muestra cómo el CLI genera automáticamente el esqueleto de un componente, incluyendo archivos .ts, .<a href="/es/html/" class="smart-link">html</a> y .<a href="/es/css/" class="smart-link">css</a>. ContadorComponent maneja el estado interno con la propiedad contador y métodos incrementar y decrementar.
El enlace de eventos (click) ilustra el flujo unidireccional de datos de Angular. CLI también registra automáticamente el componente en app.module.ts, evitando errores de configuración manual.
En aplicaciones más complejas, se recomienda manejar el estado mediante servicios con BehaviorSubject, permitiendo que varios componentes reaccionen a cambios de datos. CLI facilita la integración de estos servicios, permitiendo a los desarrolladores concentrarse en la lógica de la aplicación y no en la configuración, evitando prop drilling y renderizados innecesarios.

Ejemplo Práctico

typescript
TYPESCRIPT Code
// Ejemplo avanzado con servicio y ciclo de vida

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 usando el servicio
import { Component, OnInit, OnDestroy } from '@angular/core';
import { Subscription } from 'rxjs';
import { ContadorService } from './contador.service';

@Component({
selector: 'app-contador-avanzado',
template: `     <h2>Contador Avanzado CLI</h2>     <p>Valor actual: {{ valor }}</p>     <button (click)="sumar()">+</button>     <button (click)="restar()">-</button>
`
})
export class ContadorAvanzadoComponent implements OnInit, OnDestroy {
valor = 0;
sub!: Subscription;

constructor(private contadorService: ContadorService) {}

ngOnInit() {
this.sub = this.contadorService.contador$.subscribe(v => this.valor = v);
}

sumar() {
this.contadorService.incrementar();
}

restar() {
this.contadorService.decrementar();
}

ngOnDestroy() {
this.sub.unsubscribe();
}
}

Advanced Angular Implementation

typescript
TYPESCRIPT Code
// Ejemplo avanzado para proyectos corporativos con SharedModule

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { ContadorAvanzadoComponent } from '../contador-avanzado/contador-avanzado.component';

@NgModule({
declarations: [ContadorAvanzadoComponent],
imports: [CommonModule],
exports: [ContadorAvanzadoComponent]
})
export class SharedModule {}

// Registro en AppModule
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 {}

Las mejores prácticas del CLI incluyen la creación de módulos compartidos (SharedModule) para componentes reutilizables, promoviendo la modularidad y evitando duplicación. CLI asegura la correcta importación y registro, minimizando errores.
Errores comunes a evitar incluyen modificar estado directamente, generar renderizados innecesarios o crear dependencias circulares. CLI ofrece comandos de lint y test (ng lint, ng test) para detectar problemas tempranamente.
Para optimizar performance, use ng build --prod con tree-shaking y minificación. CLI también permite auditorías de seguridad y actualización de dependencias con ng update. La depuración se realiza con ng serve --open y herramientas DevTools, monitoreando ciclo de vida y flujos de RxJS.

📊 Referencia Completa

Angular Element/Method Description Syntax Example Notes
ng new Crear nuevo proyecto ng new app-name ng new miApp Incluye configuración inicial
ng generate component Generar componente ng g c name ng g c dashboard Crea estructura completa
ng generate service Generar servicio ng g s name ng g s auth Root scope por defecto
ng build Construir proyecto ng build [options] ng build --prod Optimizado para producción
ng serve Iniciar servidor dev ng serve [options] ng serve --open Desarrollo y pruebas
ng lint Revisar código ng lint ng lint ESLint
ng test Ejecutar unit tests ng test ng test Karma + Jasmine
ng e2e End-to-End tests ng e2e ng e2e Protractor
ng add Agregar paquete ng add package ng add @angular/material Configuración automática
ng update Actualizar paquetes ng update ng update @angular/core Mantener compatibilidad
ng deploy Desplegar proyecto ng deploy ng deploy Depende del adaptador
ng analytics Telemetría ng analytics off ng analytics on Privacidad
ng config Configurar CLI ng config key value ng config cli.warnings.versionMismatch false Parámetros del CLI
ng doc Documentación ng doc topic ng doc router Acceso rápido
ng version Versiones Angular ng version ng v Diagnóstico
ng extract-i18n Exportar mensajes i18n ng extract-i18n ng xi18n Internacionalización
ng generate module Generar módulo ng g m name ng g m shared Estructura modular
ng cache clean Limpiar cache ng cache clean ng cache clean Mejora compilación
ng generate pipe Generar pipe ng g p name ng g p capitalize Transformación de datos
ng completion Autocompletado CLI ng completion ng completion Facilita desarrollo

📊 Complete Angular Properties Reference

Property Values Default Description Angular Support
strict true/false true Modo estricto de compilación v12+
inlineStyle true/false false CSS inline en componente v10+
inlineTemplate true/false false Template inline v10+
skipTests true/false false Omitir generación de tests v8+
routing true/false false Agregar módulo de rutas v9+
style css/scss/sass css Selección de preprocesador v8+
prefix string app Prefijo selector v8+
skipInstall true/false false Omitir instalación dependencias v8+
packageManager npm/yarn/pnpm npm Gestor de paquetes v11+
strictTemplates true/false true Validación estricta templates v13+
minimal true/false false Estructura mínima proyecto v14+
standalone true/false false Componente standalone v15+

Resumen y siguientes pasos
La Referencia CLI es fundamental para desarrolladores Angular, automatizando y estandarizando la creación de componentes, módulos y servicios.
Permite entender arquitectura de componentes, manejo de estado, flujo de datos, optimización de performance y seguridad.
Se recomienda continuar con Lazy Loading, Standalone Components y gestión de estado avanzada (NgRx). CLI aplicado en proyectos reales refuerza estos conocimientos. Se sugiere usar documentación oficial y Angular DevTools para prácticas avanzadas.

🧠 Pon a Prueba tu Conocimiento

Listo para Empezar

Pon a Prueba tu Conocimiento

Ponte a prueba con este cuestionario interactivo y descubre qué tan bien entiendes el tema

3
Preguntas
🎯
70%
Para Aprobar
♾️
Tiempo
🔄
Intentos

📝 Instrucciones

  • Lee cada pregunta cuidadosamente
  • Selecciona la mejor respuesta para cada pregunta
  • Puedes repetir el quiz tantas veces como quieras
  • Tu progreso se mostrará en la parte superior