In meiner Githubs-Repos- Dokumentation möchte ich eine Verzeichnisbaumstruktur wie diese darstellen:
Gibt es eine Möglichkeit, dies mit Github-Markdown zu tun, außer es nur mit ASCII-Kunst zu erstellen?
Also im Grunde wie diese Frage , aber ich frage mich, ob es eine Github-spezifische Lösung gibt.
Antworten:
Nicht direkt, nein. Sie müssten es von Hand erstellen und in sich selbst stecken. Angenommen, Sie verwenden eine * nix-Box lokal und verwenden utf, dann wird sie von tree gut generiert (ich glaube, das hat das oben verwendete Beispiel generiert).
Angenommen, Sie meinen das
readme.md
als Dokumentationsziel, dann wäre die einzige Möglichkeit, die Sie automatisieren könnten, ein Git-Pre-Commit-Hook, der ausgeführttree
und in Ihre Readme-Datei eingebettet wurde. Sie möchten einen Diff durchführen, um sicherzustellen, dass Sie die Readme-Datei nur aktualisiert haben, wenn sich die Ausgabe geändert hat.Otoh wenn Sie separate Dokumente über Github Seiten pflegen, dann , was Sie können tun, ist Schalter zur Verwendung von jekyll (oder einen anderen Generator) lokal und schieben die statischen Seiten selbst. Dann können Sie die gewünschten Änderungen möglicherweise entweder als Plugin / Shell-Skript * / manuelle Änderungen implementieren (wenn sie nicht stark variieren) oder dieselbe Methode wie oben verwenden.
* Wenn Sie es in einen Commit-Hook integrieren, können Sie vermeiden, zusätzliche Schritte zum Ändern Ihrer Seiten hinzuzufügen.
quelle
tree
Befehl mit Homebrew installieren , dbrew install tree
. H. Dann habe ich aus dem Verzeichnis, das ich darstellen wollte,tree . >> tree.txt
den Text in meiner Datei README.md ausgeführt und dann kopiert und bearbeitet. Genau das getan, was ich brauchte!Ich habe das Problem folgendermaßen gelöst:
tree
in bash einfügen.quelle
Ich habe ein kleines Skript geschrieben, das den Trick macht:
Beispiel:
Ursprünglicher Baumbefehl:
Markdown-Baumbefehl:
Gerendertes Ergebnis:
(Links sind in Stackoverflow nicht sichtbar ...)
Projektbaumquelle
Ich habe ein Knotenmodul erstellt, um diese Aufgabe zu automatisieren: mddir
Verwendung
Knoten mddir "../relative/path/"
So installieren Sie: npm install mddir -g
So generieren Sie einen Abschlag für das aktuelle Verzeichnis: mddir
So generieren Sie für einen beliebigen absoluten Pfad: mddir / absolute / path
So generieren Sie für einen relativen Pfad: mddir ~ / Documents / Whatever.
Die MD-Datei wird in Ihrem Arbeitsverzeichnis generiert.
Ignoriert derzeit die Ordner node_modules und .git.
Fehlerbehebung
Wenn Sie die Fehlermeldung 'node \ r: Keine solche Datei oder kein solches Verzeichnis' erhalten, besteht das Problem darin, dass Ihr Betriebssystem unterschiedliche Zeilenenden verwendet und mddir diese nicht analysieren kann, ohne dass Sie den Zeilenendenstil explizit auf Unix setzen. Dies betrifft normalerweise Windows, aber auch einige Linux-Versionen. Das Festlegen von Zeilenenden auf den Unix-Stil muss im globalen bin-Ordner mddir npm erfolgen.
Zeilenenden reparieren
Holen Sie sich den npm bin Ordnerpfad mit:
npm config get prefix
CD in diesen Ordner
brauen install dos2unix
dos2unix lib / node_modules / mddir / src / mddir.js
Dadurch werden Zeilenenden in Unix anstelle von Dos konvertiert
Führen Sie dann wie gewohnt aus mit: node mddir "../relative/path/".
Beispiel generierte Markdown-Dateistruktur 'directoryList.md'
quelle
node_modules/mddir/src/
Verzeichnis ausführen müssen ? Zum Beispiel möchte ichnode ~./src > dir-struct.txt
aus meinem Projektverzeichnis ausführen und den Inhalt von dir-struct.txt direkt in meinen Markdown einfügen.Der beste Weg, dies zu tun, besteht darin, Ihren Baum in den dreifachen Backticks zu umgeben, um einen Codeblock zu kennzeichnen. Weitere Informationen finden Sie in den Markdown-Dokumenten: http://daringfireball.net/projects/markdown/syntax#code
quelle
Sie können <pre> -Tags verwenden, wie ich es in einem meiner Projekte getan habe .
quelle
Sie können dieses baumerweiterte Paket auch überprüfen . Es kann als Befehlszeilen-App verwendet werden, indem der Knoten> = 6.x verwendet wird.
Es ist sehr ähnlich, hat
tree
aber auch die Möglichkeit, das Maximum tief im Baum zu konfigurieren, das ist eines der schrecklichen Dinge davon. Sie können auch mithilfe einer.gitignore
Datei filtern .quelle
Keine der oben genannten Lösungen funktionierte für mich vollständig auf meinem Mac.
Die beste Lösung, die ich gefunden habe, ist die Verwendung des hier erstellten Dienstprogramms.
https://github.com/michalbe/md-file-tree
Sobald Sie das Dienstprogramm installiert haben
npm install md-file-tree -g
, können Sie es einfach ausführen, um alle Dateibäume abzurufenquelle
Hier ist eine nützliche
git alias
, die für mich funktioniert.Hier ist die Ausgabe von
git tree
Der vergleichbare
tree
BefehlNatürlich hat Tree eine bessere Ausgabe, aber ich möchte, dass meine .gitignore-Datei verwendet wird. Damit mein kompilierter Inhalt nicht angezeigt wird
quelle
Ein einfacher
tree
Befehl erledigt den Job. Beispiel:tree -o readme.md
Druckt die Baumstruktur Ihres aktuellen Arbeitsverzeichnisses und schreibt sie inreadme.md
. Öffnen Sie dann die Datei readme.md in einem Texteditor wie Sublime und verpacken Sie den Inhalt in ein Paar dreifacher Backticks (`` `).Zu Ihrer Information: Möglicherweise müssen Sie den Installationsbaum in OSX brauen, wenn er nicht bereits installiert ist. Unter Linux und Windows sollte es einwandfrei funktionieren. Auch in Fenstern müssen Sie möglicherweise den Bindestrich durch einen Schrägstrich ersetzen.
Ich hoffe das hilft.
quelle
Wenn Sie an Windows arbeiten, schreiben Sie
tree /f
in das Verzeichnis, das Sie an der Eingabeaufforderung erreichen möchten. Dies sollte Ihren Job machen. Sie können die Ausgabe bei Markdown kopieren und einfügen, umgeben von meinen dreifachen Back-Ticks, dh '' '{Baumstruktur hier}' ''quelle
Ich mag es einfach, es mit UTF-8 zu generieren und es mit jeder Datei und jedem Ordner zu verknüpfen, um wirklich einfach zu navigieren. Bitte schauen Sie sich das Beispiel hier an .
quelle
Für diejenigen, die eine schnelle Lösung suchen:
Es gibt eine Möglichkeit, eine Ausgabe an die Konsole zu übertragen, die der Ausgabe von tree ähnelt, indem Sie den folgenden Befehl in Ihr Terminal eingeben:
Diese Alternative wird in dieser Dokumentation erwähnt: https://wiki.ubuntuusers.de/tree/
Anschließend kann die Ausgabe kopiert und in eine MD-Datei mit Codeblock-Back-Tics eingekapselt werden, wie in der Antwort von Jonathas BC erwähnt.
Beachten Sie jedoch, dass auch alle Knotenmodulordner in einem Knotenprojekt ausgegeben werden. Und im Baum kann man so etwas machen
um den Ordner mit den Knotenmodulen auszuschließen.
quelle
Es gibt auch einen DOS-Befehl "Baum". Sie können Verzeichnispfade und Dateien in jedem Unterverzeichnis mit dem folgenden Befehl anzeigen:
https://web.csulb.edu/~murdock/tree.html
quelle