Standardmäßig wird Obsidian Vault vom Starlight-Obsidian-Plugin nach src/content/docs/notes kopiert.
Infolgedessen befinden sich die Anzeige der Seitenleisten-Benutzeroberfläche und die URL-Pfadbeschreibung eine Ebene unter dem Stammverzeichnis, was zu einem Unterschied in der Verzeichnisstruktur um eine Ebene im Vergleich zur Anzeige auf Obsidian führt.
Was ich erreichen möchte
- Legen Sie das Vault-Kopierziel direkt unter src/content/docs fest
- Richten Sie die Seitenleiste an der Obsidian Vault-Hierarchie aus
Legen Sie das Vault-Kopierziel direkt unter src/content fest
Das ist relativ einfach.
Leeren Sie zunächst den Bereich unter src/content/docs.
rm -rf ./src/content/docs/**/*Ändern Sie als Nächstes die Einstellungen, indem Sie mit astro.config.mjs herumspielen.
import starlight from '@astrojs/starlight'import { defineConfig } from 'astro/config'import starlightObsidian, { obsidianSidebarGroup } from 'starlight-obsidian'
export default defineConfig({ integrations: [ starlight({ plugins: [ starlightObsidian({ output: '.' }), ], title: 'My Docs', }), ],})Durch Angabe von output: '.' wird es direkt unter das Stammverzeichnis kopiert.
Richten Sie die Seitenleiste an der Hierarchie von Obsidian Vault aus
Hierzu wurde ein GitHub-Problem eröffnet, aber um den Spezifikationen von @astrojs/starlight zu entsprechen, sieht die Richtlinie vor, es derzeit nicht als Plugin zu unterstützen.
Daher werden wir die Verzeichnisstruktur mit unserer eigenen Implementierung erstellen, anstatt das von starlight-obsidian generierte obsidianSidebarGroup zu verwenden.
touch sidebar.config.mjsimport path from 'node:path';import fs from 'node:fs/promises';
const CONTENT_DIR = path.resolve(process.cwd(), 'src/content/docs');
export async function generateSidebar() { const entries = await fs.readdir(CONTENT_DIR, { withFileTypes: true }); const dirs = entries.filter(v => v.isDirectory() && !v.name.startsWith("."));
/** @type {import('@astrojs/starlight/types').StarlightUserConfig} */ const config = { sidebar: dirs.map(v => ({ label: v.name, autogenerate: { directory: v.name } })) }
return config.sidebar}import starlight from '@astrojs/starlight'import { defineConfig } from 'astro/config'import starlightObsidian from 'starlight-obsidian'import { generateSidebar } from './sidebar.config.mjs'
const sidebar = await generateSidebar();
export default defineConfig({ integrations: [ starlight({ plugins: [ starlightObsidian({ output: '.' }), ], title: 'My Docs', sidebar }), ],})Zusammenfassung
Durch Ändern des Standardverhaltens des Starlight-Obsidian-Plugins kann die hierarchische Struktur von Obsidian Vault direkt auf der Starlight-Site widergespiegelt werden.
Durch die automatische Generierung von Seitenleisten können Sie eine konsistente Struktur zwischen Obsidian und Starlight beibehalten.
hsb.horse