logo hsb.horse
← Zur Blog-Übersicht

Blog

Ändern Sie das Vault-Kopierziel mit dem Starlight-Obsidian-Plugin in Root

So ändern Sie das Standardverhalten des Starlight-Obsidian-Plugins und kopieren Obsidian Vault direkt unter src/content/docs. Organisierte Implementierung zur Lösung von Unterschieden in der Hierarchiestruktur der Seitenleiste.

Veröffentlicht:

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.

Terminal window
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.

Option, Obsidian zur gesamten Seitenleiste zu machen, ohne dass ein Root-Knoten erforderlich ist. · Ausgabe Nr. 5 · HiDeoo/starlight-obsidian

Daher werden wir die Verzeichnisstruktur mit unserer eigenen Implementierung erstellen, anstatt das von starlight-obsidian generierte obsidianSidebarGroup zu verwenden.

Terminal window
touch sidebar.config.mjs
import 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.