0Pricing
React Academy · Lección

Generadores de código y automatización del workspace

Escriba generadores personalizados de Nx para crear componentes, páginas y bibliotecas de forma coherente.

Generadores de código y automatización del workspace es una lección gratuita de React Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de React Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de React Academy incluye 4 lecciones en total.

¿Qué son los generadores de Nx?

Los generadores de Nx son herramientas de generación de código (similares a los schematics) que crean archivos base, actualizan configuraciones y mantienen la coherencia en todo el monorepo. Puede ejecutar generadores integrados o escribir los suyos propios.

Ejecución de generadores integrados

Use nx generate con el paquete y el nombre de un generador. Añada --dry-run para previsualizar los cambios sin escribir archivos.

# Generate a React component in the ui library:
npx nx generate @nx/react:component Button --project=ui --dry-run

# Generate a hook:
npx nx generate @nx/react:hook useAuth --project=data-access

Creación de un generador personalizado

Genere una plantilla de generador vacía dentro de un proyecto de plugin local.

# Create a local plugin:
npx nx generate @nx/plugin:plugin my-plugin --directory=tools/my-plugin

# Add a generator to it:
npx nx generate @nx/plugin:generator feature-module --project=my-plugin

Estructura de un generador

Un generador consta de un schema.json (entradas) y un index.ts (lógica que modifica los archivos y el espacio de trabajo).

// tools/my-plugin/src/generators/feature-module/schema.json
{
  "$schema": "...",
  "title": "Feature Module Generator",
  "properties": {
    "name": { "type": "string", "description": "Feature name" },
    "directory": { "type": "string", "default": "libs" }
  },
  "required": ["name"]
}

Index.ts del generador

La función del generador recibe el árbol (una abstracción del sistema de archivos) y las opciones. Use las API del árbol para leer, escribir y actualizar archivos.

import { Tree, formatFiles, generateFiles } from '@nx/devkit';
import * as path from 'path';

export default async function (tree: Tree, options: FeatureGeneratorSchema) {
  generateFiles(
    tree,
    path.join(__dirname, 'files'), // template folder
    `libs/${options.name}`,       // output path
    { ...options, tmpl: '' }       // template variables
  );
  await formatFiles(tree); // run prettier on generated files
}

Archivos de plantilla

Coloque los archivos de plantilla en una carpeta files/ junto al generador. Use la sintaxis de EJS para el contenido dinámico.

// tools/my-plugin/src/generators/feature-module/files/src/index.ts__tmpl__
export * from './lib/<%= name %>';

// files/src/lib/__name@dasherize__.ts__tmpl__
export function <%= name %>() {
  return '<%= name %> feature';
}

Actualización de project.json

Los generadores pueden modificar archivos existentes. Use updateProjectConfiguration para añadir nuevos destinos a un proyecto.

import { updateProjectConfiguration, readProjectConfiguration } from '@nx/devkit';

const config = readProjectConfiguration(tree, options.project);
config.targets.storybook = {
  executor: '@storybook/nx:build-storybook',
  options: { outputDir: 'dist/storybook' },
};
updateProjectConfiguration(tree, options.project, config);

Ejecución de su generador

Ejecute los generadores personalizados de la misma forma que los integrados, haciendo referencia a su plugin local.

npx nx generate my-plugin:feature-module my-feature --dry-run
npx nx generate my-plugin:feature-module my-feature

Migraciones del espacio de trabajo

Nx proporciona migraciones automáticas al actualizar la versión de Nx. Ejecute nx migrate latest y después nx migrate --run-migrations para aplicarlas.

npx nx migrate latest
# Review migrations.json
npx nx migrate --run-migrations

Automatización del código repetitivo

Desarrolle generadores personalizados para los patrones específicos de su equipo: módulos de funcionalidad con una estructura de carpetas estándar, páginas CRUD, bibliotecas de acceso a datos con hooks de consulta preconfigurados, etc.

Pruebas de generadores

Nx proporciona un entorno de pruebas para los generadores. Cree un árbol mínimo en las pruebas para verificar la generación de archivos sin modificar el sistema de archivos real.

import { createTreeWithEmptyWorkspace } from '@nx/devkit/testing';

test('generates feature module', async () => {
  const tree = createTreeWithEmptyWorkspace();
  await generator(tree, { name: 'products' });
  expect(tree.exists('libs/products/src/index.ts')).toBe(true);
});

Comprobación rápida

¿Cuál es la finalidad de la carpeta files/ en un generador de Nx?

Repaso

Los generadores de Nx crean archivos base de forma coherente mediante nx generate. Escriba generadores personalizados con un schema.json (entradas) y un index.ts (lógica). Use la carpeta files/ para las plantillas de EJS. Pruebe los generadores con createTreeWithEmptyWorkspace para utilizar un sistema de archivos en memoria seguro.

Preguntas frecuentes

¿La lección «Generadores de código y automatización del workspace» es gratis?

Sí — el texto completo de «Generadores de código y automatización del workspace» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de React Academy, actualiza a CoddyKit PRO. El curso de React Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Generadores de código y automatización del workspace»?

Escriba generadores personalizados de Nx para crear componentes, páginas y bibliotecas de forma coherente. Practicas React Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar React Academy?

No se requiere experiencia previa. React Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «Generadores de código y automatización del workspace»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de React Academy?

Sí. Cada lección de React Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Crear un monorepo Nx con aplicaciones React
  2. Bibliotecas compartidas y paquetes internos
  3. Comandos Affected y caché de Nx
  4. Generadores de código y automatización del workspace
← Volver a React Academy