Core Concepts
Overriding
Nadpisania pozwalają zastąpić dowolny plik w web/, admin/, docs/ lub shared_modules/ bez edycji oryginału. Przy buildzie Nuxt rozwiązuje ścieżkę override zamiast źródła.
Nadpisania są tylko dla Nuxt. Nie dotyczą cyklu import kompilatora, produkcyjnych buildów Astro poza Nuxt ani generowanych shelli (web-next/, web-solid/, …) — chyba że skonfigurujesz to osobno.
Jak to działa
- Odzwierciedl oryginalną ścieżkę pliku pod
overrides/{package}/ - Nuxt dev/build skanuje
overrides/przy starcie - Gdy jest dopasowanie, override całkowicie zastępuje oryginał — bez merge, bez częściowego patcha
Oryginał: web/src/composables/useAuth.ts
Override: overrides/web/src/composables/useAuth.tsUkład katalogów
overrides/
├── web/
│ └── src/… # odzwierciedla web/src/…
├── admin/
│ └── src/…
├── docs/
│ └── src/…
└── shared_modules/
└── nuc_colors/…Każdy podkatalog ma README.md z przykładami dla pakietu.
Przykłady
Nadpisanie sekcji landing
Oryginał: web/src/pages/home/index.vue
Override: overrides/web/src/pages/home/index.vueGdy forkujesz branding lub layout dla white-label, zachowując drzewo upstream web/.
Nadpisanie composable
Oryginał: web/src/composables/useAuth.ts
Override: overrides/web/src/composables/useAuth.tsGdy flow auth różni się per wdrożenie, reszta app zostaje ta sama.
Nadpisanie handlera API modułu
Oryginał: shared_modules/nuc_colors/supabase/api/handle.ts
Override: overrides/shared_modules/nuc_colors/supabase/api/handle.tsGdy backend musi się różnić bez forkowania całego modułu nuc_colors.
Nadpisanie layoutu docs
Oryginał: docs/src/layouts/DocsLayout.astro
Override: overrides/docs/src/layouts/DocsLayout.astroUwaga: rozwiązywanie override w Astro zależy od setupu build docs — zweryfikuj w dev po dodaniu pliku.
Debugowanie nadpisań
Gdy zachowanie różni się od tego, co widzisz w źródle:
- Sprawdź
overrides/{package}/pod kątem ścieżki pasującej do czytanego pliku - Tymczasowo przenieś lub usuń override, żeby potwierdzić, że to aktywna wersja
- Pamiętaj: override zasłania całe pliki — jedna linia zmiany nadal wymaga skopiowania pełnego pliku
Czym nadpisania nie są
| Potrzeba | Override? | Alternatywa |
|---|---|---|
| Emit komponentu portable | Nie | Edytuj *.nuc.tsx, uruchom pnpm compiler:build |
| Import emit z powrotem do authoring | Nie | pnpm compiler -- import --from=vue|react |
| Generowana powłoka Next.js | Nie* | Edytuj web/, konwertuj przez make web TARGET=next |
| Konfiguracja per środowisko | Nie | Root .env, web/.config/nuxt/runtime.ts |
| Schemat bazy | Nie | Migracje modułów w shared_modules/nuc_*/supabase/ |
*Chyba że dodasz osobne narzędzie override dla Next — poza domyślnym skanerem Nuxt.
Dobre praktyki
- Mało nadpisań — wiele override utrudnia upgrade
- Dokumentuj dlaczego — komentarz na górze pliku override z powodem forka
- Preferuj moduły — jeśli wiele app potrzebuje zmiany, rozszerz
shared_modules/ - Sync upstream — przy merge upstream Nucleify diffuj override z oryginałami
- Bez sekretów — override to pliki źródłowe; klucze w
.env
Powiązane docs
- Układ monorepo —
overrides/w kontekście - Moduły — kiedy rozszerzyć moduł vs nadpisać
- Kompilator — override poza cyklem import