Diese Anleitung führt Sie durch die Migration einer bestehenden shipyard-Dokumentationsseite zur Verwendung versionierter Dokumentation. Die Migration ist nicht-breaking und kann inkrementell durchgeführt werden.
Stellen Sie vor der Migration sicher, dass Sie:
@levino/shipyard-docs Version 0.4.0 oder höher installiert habenDer Migrationsprozess umfasst:
Wichtig: Diese Migration ist nicht-breaking. Ihre bestehenden URLs funktionieren weiterhin, und das Versionssystem fügt neue URL-Muster hinzu, anstatt bestehende zu ändern.
Bevor Sie Inhalte umstrukturieren, entscheiden Sie sich für Ihren Versionierungsansatz:
Wie viele Versionen werden Sie pflegen?
Welches Versionsbenennungsschema werden Sie verwenden?
v1, v2, v3v1, v2 (vermeiden Sie Punkte in Ordnernamen)stable, next, legacyMüssen Sie die aktuellen Docs unverändert behalten?
v1, und Sie erstellen v2 für ÄnderungenFür die meisten Migrationen empfehlen wir:
v1)v2) nur bei Breaking ChangesIhre bestehende Struktur sieht wahrscheinlich so aus:
docs/
├── index.md
├── getting-started.md
├── configuration.md
└── advanced/
├── api.md
└── plugins.md
Oder mit i18n:
docs/
├── en/
│ ├── index.md
│ └── getting-started.md
└── de/
├── index.md
└── getting-started.md
Verschieben Sie alle Inhalte in ein Versionsverzeichnis:
Ohne i18n:
docs/
└── v1/
├── index.md
├── getting-started.md
├── configuration.md
└── advanced/
├── api.md
└── plugins.md
Mit i18n:
docs/
└── v1/
├── en/
│ ├── index.md
│ └── getting-started.md
└── de/
├── index.md
└── getting-started.md
Führen Sie diese Befehle vom Projektstamm aus:
Ohne i18n:
# Versionsverzeichnis erstellen
mkdir -p docs/v1
# Alle Inhalte in Versionsverzeichnis verschieben
mv docs/*.md docs/v1/
mv docs/*/ docs/v1/ 2>/dev/null || true
# Struktur überprüfen
ls -la docs/v1/
Mit i18n:
# Versionsverzeichnis erstellen
mkdir -p docs/v1
# Locale-Verzeichnisse in Versionsverzeichnis verschieben
mv docs/en docs/v1/
mv docs/de docs/v1/
# Für weitere Locales wiederholen
# Struktur überprüfen
ls -la docs/v1/
Aktualisieren Sie Ihre src/content.config.ts (oder src/content/config.ts):
import { defineCollection } from 'astro:content'
import { docsSchema } from '@levino/shipyard-docs'
import { glob } from 'astro/loaders'
const docs = defineCollection({
loader: glob({ pattern: '**/*.md', base: './docs' }),
schema: docsSchema,
})
export const collections = { docs }
import { defineCollection } from 'astro:content'
import { createVersionedDocsCollection } from '@levino/shipyard-docs'
const docs = defineCollection(
createVersionedDocsCollection('./docs', {
versions: ['v1'], // Bei Bedarf weitere Versionen hinzufügen
fallbackVersion: 'v1',
}),
)
export const collections = { docs }
createVersionedDocsCollection statt docsSchema und globversions-ArrayAktualisieren Sie Ihre astro.config.mjs:
import { defineConfig } from 'astro/config'
import shipyardDocs from '@levino/shipyard-docs'
export default defineConfig({
integrations: [
shipyardDocs({
// bestehende Konfiguration
}),
],
})
import { defineConfig } from 'astro/config'
import shipyardDocs from '@levino/shipyard-docs'
export default defineConfig({
integrations: [
shipyardDocs({
// bestehende Konfiguration
versions: {
current: 'v1',
available: [
{ version: 'v1', label: 'Version 1.0' },
],
stable: 'v1',
},
}),
],
})
| Eigenschaft | Beschreibung | Anfangswert |
|---|---|---|
current | Standardversion für /docs/ | Ihr Versionsname |
available | Array von Versionskonfigurationen | Anfangs einzelne Version |
deprecated | Versionen, die Warnungen anzeigen sollen | Leeres Array |
stable | Als stabiles Release markiert | Gleich wie current |
# Seite bauen
npm run build
# Lokal vorschauen
npm run preview
Nach der Migration funktionieren Ihre URLs wie folgt:
| Alte URL | Neue URL | Hinweise |
|---|---|---|
/docs/getting-started | /docs/v1/getting-started | Versions-Präfix hinzugefügt |
/docs/ | /docs/v1/ | Weiterleitung zur aktuellen Version |
| N/A | /docs/latest/getting-started | Neuer Alias für aktuelle Version |
Mit i18n:
| Alte URL | Neue URL |
|---|---|
/en/docs/getting-started | /en/docs/v1/getting-started |
/de/docs/getting-started | /de/docs/v1/getting-started |
Falls Sie bestehende E2E-Tests haben, aktualisieren Sie die URL-Erwartungen:
// Vorher
await page.goto('/docs/getting-started')
// Nachher
await page.goto('/docs/v1/getting-started')
// Oder den latest-Alias verwenden:
await page.goto('/docs/latest/getting-started')
Falls Ihre Dokumentation interne Links enthält, aktualisieren Sie diese, um die Version einzuschließen:
Relative Links funktionieren automatisch innerhalb derselben Version:
<!-- Funktioniert - bleibt in derselben Version -->
Siehe die [Konfigurationsanleitung](./configuration)
Siehe die [API-Referenz](../advanced/api)
Für Links, die immer auf die aktuelle Version zeigen sollen:
<!-- Zeigt immer auf aktuelle Version -->
Siehe die [Erste Schritte](/docs/latest/getting-started)
Für Links zu bestimmten Versionen:
<!-- Links zu bestimmter Version -->
Siehe die [v1 Migrationsanleitung](/docs/v1/migration)
Wenn Sie bereit sind, eine neue Version hinzuzufügen:
cp -r docs/v1 docs/v2
// astro.config.mjs
versions: {
current: 'v2', // current aktualisieren
available: [
{ version: 'v2', label: 'Version 2.0 (Aktuell)' },
{ version: 'v1', label: 'Version 1.0' },
],
stable: 'v2', // stable aktualisieren
},
createVersionedDocsCollection('./docs', {
versions: ['v1', 'v2'], // Neue Version hinzufügen
fallbackVersion: 'v2', // Fallback aktualisieren
})
Ändern Sie die Inhalte in docs/v2/, um die Änderungen der neuen Version widerzuspiegeln.
Build schlägt fehl mit “cannot find content”
versions-Array alle Ihre Versionsordnernamen enthältVersion Selector erscheint nicht
404-Fehler bei bestehenden URLs
Sidebar zeigt falsche Seiten
Falls Sie auf Probleme stoßen:
rm -rf dist .astro && npm run buildFalls Sie die Migration rückgängig machen müssen:
Inhalte aus dem Versionsverzeichnis zurückverschieben:
mv docs/v1/* docs/
rmdir docs/v1
src/content.config.ts zurücksetzen, um docsSchema und glob direkt zu verwenden
Die versions-Konfiguration aus astro.config.mjs entfernen