Help Angular by taking a 1 minute survey!Go to surveyHome

Generando código usando esquemas

Un esquema es un generador de código basado en plantillas que soporta lógica compleja. Es un conjunto de instrucciones para transformar un proyecto de software, generando o modificando código. Los esquemas están en el paquete collections e instalados con npm.

La colección de esquemas puede ser una herramienta poderosa para la creación, modificación, y mantenimiento de cualquier proyecto de software, pero es particularmente útil para personalizar proyectos de Angular de acuerdo a las necesidades de tu propia organización.

Podrías utilizar esquemas, por ejemplo, para generar patrones UI o componentes específicos, usando templates o layouts. Puedes usarlos también para hacer cumplir las reglas y convenciones arquitectónicas, haciendo que tus proyectos sean coherentes e inter operativos.

Esquemas para Angular CLI

Los esquemas son parte del ecosistema de Angular, Angular CLI usa esquemas para aplicar transformaciones a proyectos web.

Tu puedes modificar estos esquemas, y definir nuevos para hacer cosas como actualizar tu código para corregir cambios importantes en una dependencia, o para agregar una nueva opción de configuración o bien un framework a un proyecto existente.

Los esquemas que se incluyen en la colección @schematics/angular se ejecutan de forma predeterminada por los comandos ng generate y ng add.

El paquete contiene esquemas con nombre que configuran las opciones que están disponibles en el CLI para los subcomandos ng generate, por ejemplo ng generate component y ng generate service.

Los subcomandos para ng generate son una abreviatura para el schema correspondiente. Puedes especificar un esquema particular (o colección de esquemas) para generar, utilizando la forma larga:

ng generate my-schematic-collection:my-schematic-name
      
      ng generate my-schematic-collection:my-schematic-name
    

o

ng generate my-schematic-name --collection collection-name
      
      ng generate my-schematic-name --collection collection-name
    

Configuración de esquemas de CLI

Un esquema JSON asociado con un esquema le dice a Angular CLI qué opciones están disponibles para comandos y subcomandos, y determina los valores predeterminados.

Estos valores predeterminados pueden ser sobrescritos para proporcionar un valor diferente para una opción en la línea de comandos. Puede ver Configuración del espacio de trabajo para obtener información de cómo puedes cambiar la opción de generación predeterminada para tu espacion de trabajo.

Los esquemas JSON para los esquemas predeterminados que utiliza el CLI para generar proyectos y partes de proyectos están ubicados en el paquete @schematics/angular.

El esquema describe las opciones disponibles para el CLI para cada subcomando de ng generate, como se muestra en la salida de --help.

Desarrollo de esquemas para librerías.

Como desarrollador de librerías, puedes crear tus propias colecciones con esquemas personalizados para integrar tus librerías con Angular CLI.

  • Un add schematic permite a los desarrolladores instalar sus librería en un espacion de trabajo de Angular usando ng add.

  • Generation schematics puede decirle a los subcomandos de ng generate como modificar proyectos, configuraciones, scripts y la estructura de artefactos que están definidos en su librería.

  • Un update schematic puede decirle a los subcomandos de ng update como modificar las dependencias de las librerías y ajustarlos a los cambios importantes cuando lanza una nueva versión.

Para más detalles de cómo se ven y cómo crearlos, visitar.

Esquemas de adición

Un esquema de adición es típicamente suministrado por una librería, por lo que la librería puede ser agregado a un proyecto existente con ng add.

El comando add usa su administrador de paquetes para descargar una nueva dependencia, e invocar una script de instalación que es implementado como un schama.

Por ejemplo, el esquema @angular/material le dice al comando add que instale y configure Angular Material junto con un tema, y que registre nuevos componentes que pueden ser creados con ng generate.

Puedes verlo como un ejemplo y modelo para tu propio esquema de adición.

Las librerías de terceros también soportan Angular CLI con esquemas de adición.

Por ejemplo, @ng-bootstrap/schematics agrega ng-bootstrap para una aplicación, y @clr/angular instala y configura Clarity from VMWare.

Un esquema de adición también puede actualizar un proyecto con cambios de configuración, agregar dependencias adicionales (así como polyfills), o estructurar código de inicialización específico del paquete.

Por ejemplo, el esquema @angular/pwa convierte tu aplicación en una PWA agregando un archivo manifest y un service worker, y el esquema @angular/elements  agrega el document-register-element.js polyfill y dependencias para Angular Elements.

Esquemas de Generación

Los esquemas de generación, son instrucciones para el comando ng generate. Los sub comandos documentados usan esquemas de generación predeterminados de Angular, pero puedes especificar un esquema diferente (en lugar de un sub comando) para generar un artefacto definido en su librería.

Angular Material, por ejemplo, proporciona esquemas de generación para el componentes UI que los definen. El siguiente comando usa uno de esos esquemas para renderizar Angular Material <mat-table> que es preconfigurado con un datasource para ordenar y paginar.

ng generate @angular/material:table
      
      ng generate @angular/material:table 

    

Actualizar esquemas

Los comandos ng update pueden ser usados para actualizar las dependencias de la librería de tu espacio de trabajo. Si no proporcionas opciones o usas la opción help, el comando examina tu espácio de trabajo y sugiere librerías para actualizar.

ng update Analizamos tu package.json, hay algunos paquetes por actualizar: Name Version Command to update -------------------------------------------------------------------------------- @angular/cdk 7.2.2 -> 7.3.1 ng update @angular/cdk @angular/cli 7.2.3 -> 7.3.0 ng update @angular/cli @angular/core 7.2.2 -> 7.2.3 ng update @angular/core @angular/material 7.2.2 -> 7.3.1 ng update @angular/material rxjs 6.3.3 -> 6.4.0 ng update rxjs Es posible que haya paquetes adicionales que están actualizados. Ejecutar "ng update --all" trata de actualizar todos los packages al mismo tiempo.
      
      ng update

   Analizamos tu package.json, hay algunos paquetes por actualizar:
     Name                               Version                  Command to update
    --------------------------------------------------------------------------------
     @angular/cdk                       7.2.2 -> 7.3.1           ng update @angular/cdk
     @angular/cli                       7.2.3 -> 7.3.0           ng update @angular/cli
     @angular/core                      7.2.2 -> 7.2.3           ng update @angular/core
     @angular/material                  7.2.2 -> 7.3.1           ng update @angular/material
     rxjs                               6.3.3 -> 6.4.0           ng update rxjs
 
   Es posible que haya paquetes adicionales que están actualizados.
   Ejecutar "ng update --all" trata de actualizar todos los packages al mismo tiempo.
    

Si le pasas el comando un conjunto de librerías para actualizar (o la bandera --all), este actualiza esas librerías, sus dependencias de pares, y las dependencias de pares que dependen de ellos.

Si hay inconsistencias (por ejemplo, si las dependencias de pares no coinciden con un simple rango semver), el comando genera un error y no cambia nada en el espacio de trabajo.

Nosotros recomendamos que nos se force la actualización de todas la dependencias predeterminadas. Trata actualizando primero dependencias específicas.

Para más información acerca del como trabaja el comando ng update, puedes vistar Update Command.

Si creas una nueva versión de tu librería que introduce cambios importantes, puedes proveer un update schematic para habilitar el comando ng update para automáticamente resolver cualquier cambio en un proyecto que se actualiza.

Por ejemplo, supón que quieres actualizar la librería Angular Material.

ng update @angular/material
      
      ng update @angular/material
    

Este comando actualiza ambos @angular/material y sus dependencias @angular/cdk en tu espacion de trabajo package.json. Si alguno de los paquetes contiene un esquema de actualización que cubre la migración de una versión existente hacia una nueva versión, el comando ejecuta ese esquema en su espacio de trabajo.