Code-Generatoren und Workspace-Automatisierung
Schreiben Sie benutzerdefinierte Nx-Generatoren, um Components, Seiten und Libraries konsistent zu erstellen.
Code-Generatoren und Workspace-Automatisierung ist eine kostenlose React Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des React Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der React Academy-Kurs umfasst insgesamt 4 Lektionen.
Was sind Nx-Generatoren?
Nx-Generatoren sind Werkzeuge zur Codegenerierung (ähnlich wie Schematics), die Dateien als Grundgerüst erstellen, Konfigurationen aktualisieren und die Konsistenz in einem Monorepo wahren. Führen Sie integrierte Generatoren aus oder schreiben Sie eigene.
Integrierte Generatoren ausführen
Verwenden Sie nx generate mit einem Generatorpaket und einem Namen. Fügen Sie --dry-run hinzu, um Änderungen vorab anzuzeigen, ohne Dateien zu schreiben.
# 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-accessEinen benutzerdefinierten Generator erstellen
Generieren Sie eine leere Generatorvorlage in einem lokalen Plugin-Projekt.
# 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-pluginAufbau eines Generators
Ein Generator besteht aus einer schema.json (Eingaben) und einer index.ts (Logik, die Dateien und den Workspace verändert).
// 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"]
}Generator-index.ts
Die Generatorfunktion empfängt den Tree (eine Abstraktion des Dateisystems) und Optionen. Verwenden Sie die Tree-APIs, um Dateien zu lesen, zu schreiben und zu aktualisieren.
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
}Vorlagendateien
Platzieren Sie Vorlagendateien in einem Ordner files/ neben dem Generator. Verwenden Sie die EJS-Syntax für dynamische Inhalte.
// 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';
}project.json aktualisieren
Generatoren können vorhandene Dateien verändern. Verwenden Sie updateProjectConfiguration, um einem Projekt neue Targets hinzuzufügen.
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);Ihren Generator ausführen
Führen Sie benutzerdefinierte Generatoren genauso wie integrierte Generatoren aus und verweisen Sie dabei auf Ihr lokales Plugin.
npx nx generate my-plugin:feature-module my-feature --dry-run
npx nx generate my-plugin:feature-module my-featureWorkspace-Migrationen
Nx stellt automatische Migrationen bereit, wenn Sie die Nx-Version aktualisieren. Führen Sie nx migrate latest und anschließend nx migrate --run-migrations aus, um sie anzuwenden.
npx nx migrate latest
# Review migrations.json
npx nx migrate --run-migrationsBoilerplate automatisieren
Erstellen Sie benutzerdefinierte Generatoren für team-spezifische Muster: Feature-Module mit einer standardisierten Ordnerstruktur, CRUD-Seiten, Data-Access-Bibliotheken mit vorkonfigurierten Query-Hooks usw.
Generatoren testen
Nx stellt ein Test-Harness für Generatoren bereit. Erstellen Sie in den Tests einen minimalen Tree, um die Dateigenerierung zu überprüfen, ohne das echte Dateisystem zu verändern.
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);
});Kurztest
Welchen Zweck hat der Ordner files/ in einem Nx-Generator?
Zusammenfassung
Nx erstellt mit nx generate konsistente Dateigerüste. Schreiben Sie benutzerdefinierte Generatoren mit einer schema.json (Eingaben) und einer index.ts (Logik). Verwenden Sie den Ordner files/ für EJS-Vorlagen. Testen Sie Generatoren mit createTreeWithEmptyWorkspace in einem sicheren In-Memory-Dateisystem.
Häufig gestellte Fragen
Ist die Lektion „Code-Generatoren und Workspace-Automatisierung“ kostenlos?
Ja — der vollständige Text von „Code-Generatoren und Workspace-Automatisierung“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des React Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der React Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Code-Generatoren und Workspace-Automatisierung“?
Schreiben Sie benutzerdefinierte Nx-Generatoren, um Components, Seiten und Libraries konsistent zu erstellen. Du übst React Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um React Academy zu starten?
Keine Vorkenntnisse erforderlich. React Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „Code-Generatoren und Workspace-Automatisierung“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser React Academy-Lektion Code schreiben und ausführen?
Ja. Jede React Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Ein Nx-Monorepo mit React-Apps erstellen
- Gemeinsame Libraries und interne Packages
- Nx-Affected-Befehle und Caching
- Code-Generatoren und Workspace-Automatisierung