On this page
Tailwind CSS Setup
shipyard verwendet Tailwind CSS 4 mit DaisyUI für das Styling. Diese Anleitung erklärt, wie du Tailwind CSS konfigurierst, damit es korrekt mit shipyard-Komponenten funktioniert.
Schnell-Setup
Erstelle src/styles/app.css:
/* Tailwind CSS 4 Setup */
@import "tailwindcss";
/* Importiere shipyard-Pakete - enthält Styles und @source-Direktiven */
@import "@levino/shipyard-base";
@import "@levino/shipyard-blog";
@import "@levino/shipyard-docs";
@plugin "daisyui";
@plugin "@tailwindcss/typography";
Aktualisiere astro.config.mjs:
import shipyard from '@levino/shipyard-base'
import shipyardDocs from '@levino/shipyard-docs'
import shipyardBlog from '@levino/shipyard-blog'
import tailwindcss from '@tailwindcss/vite'
import { defineConfig } from 'astro/config'
import appCss from './src/styles/app.css?url'
export default defineConfig({
vite: {
plugins: [tailwindcss()],
},
integrations: [
shipyard({
css: appCss,
brand: 'Meine Seite',
title: 'Meine tolle Seite',
navigation: {
docs: { label: 'Doku', href: '/docs' },
blog: { label: 'Blog', href: '/blog' },
},
}),
shipyardDocs(),
shipyardBlog(),
],
})
Installiere Dependencies:
npm install tailwindcss @tailwindcss/vite daisyui @tailwindcss/typography
Das war’s! Die shipyard-Pakete enthalten eigene @source-Direktiven, sodass Tailwind automatisch alle Komponenten-Klassen erkennt.
So funktioniert es
Jedes shipyard-Paket exportiert CSS über conditional exports. Bei CSS-Import wird es zu einer CSS-Datei aufgelöst, die enthält:
- Komponenten-Styles - CSS-Regeln mit
@apply-Direktiven - @source-Direktiven - Sagen Tailwind, wo es nach Klassenverwendung suchen soll
Wenn du @import "@levino/shipyard-base" importierst, macht Tailwind CSS 4:
- Verarbeitet die Komponenten-Styles
- Folgt den
@source-Direktiven um die Quelldateien des Pakets zu scannen - Fügt alle erkannten Utility-Klassen in deinen Build ein
Das bedeutet, du musst keine Pfade manuell konfigurieren oder dir Sorgen um Monorepo vs. normale Installation machen.
Das Setup verstehen
| Direktive | Zweck |
|---|---|
@import "tailwindcss" | Initialisiert Tailwind CSS |
@import "@levino/shipyard-*" | Importiert shipyard-Styles und @source-Direktiven |
@plugin "daisyui" | Aktiviert DaisyUI-Komponenten-Klassen |
@plugin "@tailwindcss/typography" | Aktiviert Prosa-Styling für Markdown-Inhalte |
Warum ?url Import?
Das ?url-Suffix in import appCss from './src/styles/app.css?url' weist Vite an, den Dateipfad zur Build-Zeit aufzulösen. Dies ermöglicht shipyard, dein CSS in der richtigen Verarbeitungsreihenfolge einzubinden.
Warum @tailwindcss/vite?
Tailwind CSS 4 verwendet ein Vite-Plugin (@tailwindcss/vite) statt der älteren @astrojs/tailwind-Integration. Dies bietet bessere Performance und native Vite-Integration.
Fehlerbehebung
Fehlende Styles oder kaputte Komponenten
Wenn Komponenten ungestylt erscheinen:
- Prüfe CSS-Imports - Stelle sicher, dass alle drei shipyard-Pakete importiert werden
- Überprüfe CSS-Import-Reihenfolge -
@import "tailwindcss"muss zuerst kommen - Prüfe die css-Konfiguration - Stelle sicher, dass du
css: appCssan die shipyard-Integration übergibst
”Cannot apply unknown utility class”
Dieser Fehler bedeutet, dass Tailwind nicht initialisiert ist, wenn eine CSS-Datei verarbeitet wird. Stelle sicher, dass deine app.css @import "tailwindcss" als ersten Import hat.
Build-Fehler nach Upgrade
Wenn du nach einem Upgrade Fehler siehst, versuche:
- Lösche
node_modulesund installiere neu - Leere deinen Build-Cache:
rm -rf dist .astro - Überprüfe, dass alle shipyard-Pakete auf kompatiblen Versionen sind
Migration von Tailwind CSS 3
Wenn du von Tailwind CSS 3 migrierst:
- Entferne
tailwind.config.mjs- Konfiguration lebt jetzt in CSS - Entferne
@astrojs/tailwind- Nicht mehr benötigt - Installiere
@tailwindcss/vite- Das neue Vite-Plugin - Erstelle
src/styles/app.css- Mit dem oben gezeigten Setup - Aktualisiere
astro.config.mjs- Füge Vite-Plugin hinzu und importiere CSS mit?url
Vorher (Tailwind 3)
// astro.config.mjs
import tailwind from '@astrojs/tailwind'
export default defineConfig({
integrations: [
tailwind({ applyBaseStyles: false }),
shipyard({ /* ... */ }),
],
})
// tailwind.config.mjs
export default {
content: [
'./src/**/*.{astro,html,js,jsx,md,mdx,ts,tsx}',
'node_modules/@levino/shipyard-*/**/*.{astro,js,ts}',
],
plugins: [typography, daisyui],
}
Nachher (Tailwind 4)
// astro.config.mjs
import tailwindcss from '@tailwindcss/vite'
import appCss from './src/styles/app.css?url'
export default defineConfig({
vite: {
plugins: [tailwindcss()],
},
integrations: [
shipyard({
css: appCss,
/* ... */
}),
],
})
/* src/styles/app.css */
@import "tailwindcss";
@import "@levino/shipyard-base";
@import "@levino/shipyard-blog";
@import "@levino/shipyard-docs";
@plugin "daisyui";
@plugin "@tailwindcss/typography";