0Pricing
React Academy · Lekcja

Generatory kodu i automatyzacja workspace'u

Pisanie niestandardowych generatorów Nx do spójnego tworzenia komponentów, stron i bibliotek.

Generatory kodu i automatyzacja workspace'u to bezpłatna lekcja React Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej React Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs React Academy zawiera 4 lekcji w sumie.

Czym są generatory Nx?

Generatory Nx to narzędzia do generowania kodu (podobne do schematów), które tworzą pliki szkieletowe, aktualizują konfigurację i zapewniają spójność w całym monorepo. Możesz uruchamiać wbudowane generatory albo pisać własne.

Uruchamianie wbudowanych generatorów

Użyj nx generate wraz z pakietem generatora i jego nazwą. Dodaj --dry-run, aby wyświetlić podgląd zmian bez zapisywania plików.

# 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

Tworzenie własnego generatora

Wygeneruj pusty szablon generatora w lokalnym projekcie wtyczki.

# 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

Struktura generatora

Generator składa się z pliku schema.json (dane wejściowe) oraz pliku index.ts (logika modyfikująca pliki i workspace).

// 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"]
}

Plik index.ts generatora

Funkcja generatora otrzymuje drzewo (abstrakcję systemu plików) oraz opcje. Używaj API drzewa do odczytywania, zapisywania i aktualizowania plików.

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
}

Pliki szablonów

Umieść pliki szablonów w folderze files/ obok generatora. Używaj składni EJS do wstawiania dynamicznej zawartości.

// 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';
}

Aktualizowanie project.json

Generatory mogą modyfikować istniejące pliki. Użyj updateProjectConfiguration, aby dodać nowe cele do projektu.

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);

Uruchamianie własnego generatora

Uruchamiaj własne generatory tak samo jak wbudowane, wskazując lokalną wtyczkę.

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

Migracje workspace

Nx udostępnia automatyczne migracje podczas aktualizowania wersji Nx. Uruchom nx migrate latest, a następnie nx migrate --run-migrations, aby je zastosować.

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

Automatyzowanie kodu szkieletowego

Twórz własne generatory dla wzorców charakterystycznych dla zespołu: modułów funkcjonalnych ze standardową strukturą folderów, stron CRUD, bibliotek dostępu do danych ze wstępnie skonfigurowanymi hookami zapytań itd.

Testowanie generatorów

Nx udostępnia upraszczający testowanie generatorów harness. Utwórz w testach minimalne drzewo, aby zweryfikować generowanie plików bez modyfikowania rzeczywistego systemu plików.

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);
});

Szybkie sprawdzenie

Do czego służy folder files/ w generatorze Nx?

Podsumowanie

Generatory Nx spójnie tworzą szkielet plików za pomocą nx generate. Pisz własne generatory z plikiem schema.json (dane wejściowe) i plikiem index.ts (logika). Używaj folderu files/ na szablony EJS. Testuj generatory za pomocą createTreeWithEmptyWorkspace, korzystając z bezpiecznego systemu plików w pamięci.

Często zadawane pytania

Czy lekcja „Generatory kodu i automatyzacja workspace'u” jest bezpłatna?

Tak — pełny tekst „Generatory kodu i automatyzacja workspace'u” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu React Academy, przejdź na CoddyKit PRO. Kurs React Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Generatory kodu i automatyzacja workspace'u”?

Pisanie niestandardowych generatorów Nx do spójnego tworzenia komponentów, stron i bibliotek. Ćwiczysz React Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć React Academy?

Nie wymagamy żadnego doświadczenia. React Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.

Ile czasu zajmuje lekcja „Generatory kodu i automatyzacja workspace'u”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji React Academy?

Tak. Każda lekcja React Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Tworzenie monorepo Nx z aplikacjami React
  2. Współdzielone biblioteki i pakiety wewnętrzne
  3. Polecenia Nx Affected i buforowanie
  4. Generatory kodu i automatyzacja workspace'u
← Powrót do React Academy