Was macht knap?
Verwenden Sie die Knap CLI, um Markdown-Vorlagen mit Variablen, Filtern und Logik zu rendern.
Falls nicht installiert: npm install -g knap (erfordert Node.js 20 oder neuer). Alternativ kann npx knap verwendet werden.
Führen Sie knap --help aus, um verfügbare Befehle und Optionen anzuzeigen. Entdecken Sie die Sprache über die offline verfügbare Referenz der CLI:
knap help syntax
knap help filters
knap help filter date
knap help tags
knap help tag for
Verwenden Sie die Listen, um Namen zu finden, und fragen Sie dann individuelle Hilfe zu Syntax, Parametern und Beispielen mit erwarteter Ausgabe an.
Verwendung
Rendern einer Vorlage mit JSON-Variablen:
knap render template.md --data article.json -o note.md
Vorlage und Daten inline bereitstellen:
knap render -t '# {{ title | trim }}' --data-json '{"title":"Hallo"}'
Eine Variable überschreiben oder JSON-Daten pipen:
knap render template.md --data article.json --set 'title=Benutzerdefinierter Titel'
cat article.json | knap render template.md --data -
Daten müssen ein JSON-Objekt sein; seine Eigenschaften werden zu Vorlagenvariablen. --set überschreibt literale Top-Level-Schlüssel mit Zeichenketten. Verwenden Sie JSON für verschachtelte Objekte, Arrays, Zahlen und Booleans.
Wählen Sie eine Vorlagenquelle (Datei, -t oder stdin) und eine Datenquelle (--data oder --data-json). Nur eine Eingabe kann stdin lesen. Ohne eine Vorlagendatei oder -t liest Knap die Vorlage von stdin.
Die Ausgabe erfolgt standardmäßig auf stdout. -o erstellt übergeordnete Verzeichnisse und überschreibt das Ziel, nachdem das Rendern erfolgreich war. Fehler führen zum Exit-Status 1; Diagnoseinformationen gehen an stderr. Warnungen können erfolgreiche Ausgaben begleiten.
Vorlagen
Verwenden Sie {{ variable }} für Werte, | für Filter und {% ... %} für Logik. Speichern Sie dies beispielsweise als template.md:
---
{{ title | yaml_property:"title" }}
{{ tags | yaml_property:"tags" }}
---
# {{ title | trim }}
{% if author %}
Von {{ author }}
{% endif %}
{{ content }}
Verwenden Sie yaml_property für vollständige Frontmatter-Eigenschaften, damit Werte korrekt zitiert und eingerückt werden. Die CLI enthält Standardfilter, stellt aber keine Web-Clipper-Browservariablen, Selektoren, Aufforderungen oder DOM-abhängige HTML-Filter bereit. Stellen Sie Variablen über JSON bereit.
Überprüfen Sie eine Vorlage vor dem Rendern:
knap validate template.md
Die Validierung prüft Syntax, Filternamen und statische Filterargumente ohne Daten oder Dateiausgabe. Sie prüft nicht die Existenz von Variablen, Laufzeitwerte oder dynamische Argumente; rendern Sie mit echten Daten, um das Laufzeitverhalten zu prüfen. Diagnoseinformationen gehen an stderr und enthalten relevante Hilfebefehle.
Defuddle-Pipeline
Extrahieren Sie eine Webseite als JSON mit Markdown-Inhalt und rendern Sie sie dann in eine Notiz:
defuddle parse https://example.com/artikel --md --json \
| knap render template.md --data - -o note.md
Defuddles JSON-Eigenschaften wie title und content werden direkt zu Vorlagenvariablen.
Batch-Rendering
Erstellen Sie eine Datei pro CSV-Zeile, JSON-Array-Element oder JSON-Datei in einem Ordner:
knap batch template.md --data articles.csv --output-dir notizen \
--filename '{{ title | safe_name }}.md'
Verwenden Sie --data articles.json für ein Array oder --data ./articles für einen Ordner mit JSON-Objekten. CSV-Header werden zu Variablennamen, Werte bleiben Zeichenketten. Gepipte Daten standardmäßig als JSON; fügen Sie --format csv für gepipte CSV hinzu.
Verwenden Sie --dry-run, um Ausgabepfade zu validieren und aufzulisten, ohne Dateien zu schreiben. Vorhandene Dateien erfordern --overwrite, auch während eines Probelaufs. Doppelte Ausgabenamen innerhalb eines Batches sind selbst mit --overwrite Fehler.
Vorlagen für Dateinamen müssen einen einzelnen Dateinamen mit seiner Erweiterung erzeugen, ohne Verzeichnisse. Verwenden Sie safe_name für datenbasierte Namen. Ohne --filename behält Knap die Basenamen der JSON-Quelldateien bei oder nummeriert CSV-Zeilen und Array-Elemente als 1.md, 2.md usw.