Y a-t-il une façon de représenter un arbre de répertoire dans un README Github?M. D.?

Dans mon Githubs repos documentation je veux représenter une arborescence comme ceci:

enter image description here

y a-t-il un moyen de le faire avec du markdown aromatisé au Github, en plus de le créer avec de l'art ascii?

donc fondamentalement comme cette question , mais je me demande s'il y a une solution spécifique github.

26
demandé sur Oliver Matthews 2014-06-02 11:23:00

8 réponses

Pas directement, non. Il faudrait le créer à la main et le mettre en soi. En supposant que vous utilisez une boîte *nix localement et que vous utilisez utf, alors tree la générera bien (je pense que c'est ce qui a généré l'exemple que vous avez utilisé ci-dessus).

en supposant que vous voulez dire le readme.md comme cible de documentation, alors je pense que le seul moyen d'automatiser ce serait un crochet de pré-propagation git qui a couru tree et l'a intégré dans votre readme fichier. Vous voudriez faire une différence pour vous assurer que vous avez seulement mis à jour le readme si la sortie a changé.

Otoh si vous maintenez des docs séparés via des pages github, alors ce que vous pourrait faire, est de passer à l'utilisation de jekyll (ou un autre générateur) localement et en poussant les pages statiques vous-même. Alors vous pouvez potentiellement implémenter les modifications que vous voulez soit comme un plugin / shell script* / modifications manuelles (si elles ne varient pas beaucoup), ou utiliser la même méthode que ci-dessus.

*si vous l'intégrez dans un crochet de propagation, vous pouvez éviter d'ajouter des étapes supplémentaires pour changer vos pages.

9
répondu Oliver Matthews 2014-06-02 09:49:45

j'ai écrit un petit script qui fait l'affaire:

#!/bin/bash

#File: tree-md

tree=$(tree -tf --noreport -I '*~' --charset ascii  |
       sed -e 's/| \+/  /g' -e 's/[|`]-\+/ */g' -e 's:\(* \)\(\(.*/\)\([^/]\+\)\):[]():g')

printf "# Project tree\n\n${tree}"

exemple:

d'Origine de l'arbre de commande:

$ tree
.
├── dir1
│   ├── file11.ext
│   └── file12.ext
├── dir2
│   ├── file21.ext
│   ├── file22.ext
│   └── file23.ext
├── dir3
├── file_in_root.ext
└── README.md

3 directories, 7 files

Markdown arbre de commande:

$ ./tree-md .
# Project tree

.
 * [tree-md](./tree-md)
 * [dir2](./dir2)
   * [file21.ext](./dir2/file21.ext)
   * [file22.ext](./dir2/file22.ext)
   * [file23.ext](./dir2/file23.ext)
 * [dir1](./dir1)
   * [file11.ext](./dir1/file11.ext)
   * [file12.ext](./dir1/file12.ext)
 * [file_in_root.ext](./file_in_root.ext)
 * [README.md](./README.md)
 * [dir3](./dir3)

résultat du Rendu:

(les liens ne sont pas visibles dans Stackoverflow...)

arborescence du Projet
  • arbre-md
  • dir2
    • file21.poste 1519190920"
    • file22.poste 1519190920"
    • file23.poste 1519190920"
  • dir1
    • file11.poste 1519190920"
    • file12.poste 1519190920"
  • file_in_root.poste 1519190920"
  • README.md
  • dir3
23
répondu Simon 2016-03-09 10:57:30

j'ai obtenu résoudre le problème de cette façon:

  1. Insérer la commande tree dans bash.

    exemple

    enter image description here

  2. Créer un fichier README.md dans le dépôt github et une copie de la page du bash

  3. Insérer le code markdown

    exemple

    enter image description here

  4. Voir la sortie et être heureux =)

    enter image description here

22
répondu Jonathas B. C. 2018-05-09 21:53:12

j'ai fait un module de noeud pour automatiser cette tâche: mddir

Utilisation

nœud mddir "../relative/chemin/"

à installer: npm install mddir-g

pour générer markdown pour le répertoire courant: mddir

Pour générer pour n'importe quel chemin d'accès absolu: mddir chemin /chemin/absolu

à générer pour un chemin relatif: mddir ~/Documents/whatever.

le fichier md est généré dans votre répertoire de travail.

ignore node_modules, and .dossiers git.

dépannage

si vous recevez l'erreur 'node\r: notedefile or directory', le problème est que votre système d'exploitation utilise des fins de ligne différentes et mddir ne peut pas les Parser sans que vous définissiez explicitement le style de fin de ligne à Unix. Cela affecte généralement Windows, mais aussi certains les versions de Linux. La définition des fins de ligne au style Unix doit être effectuée dans le dossier global bin de mddir npm.

fin de ligne fixe

Obtenir mnp bin chemin d'accès au dossier:

npm config get prefix

Cd dans ce dossier

brew install dos2unix

dos2unix lib/node_modules/mddir/src / mddir.js

convertit les fins de ligne en Unix au lieu de Dos

puis exécuter normalement avec: node mddir"../relative/chemin/".

Exemple généré démarque de la structure du fichier 'directoryList.md'

    |-- .bowerrc
    |-- .jshintrc
    |-- .jshintrc2
    |-- Gruntfile.js
    |-- README.md
    |-- bower.json
    |-- karma.conf.js
    |-- package.json
    |-- app
        |-- app.js
        |-- db.js
        |-- directoryList.md
        |-- index.html
        |-- mddir.js
        |-- routing.js
        |-- server.js
        |-- _api
            |-- api.groups.js
            |-- api.posts.js
            |-- api.users.js
            |-- api.widgets.js
        |-- _components
            |-- directives
                |-- directives.module.js
                |-- vendor
                    |-- directive.draganddrop.js
            |-- helpers
                |-- helpers.module.js
                |-- proprietary
                    |-- factory.actionDispatcher.js
            |-- services
                |-- services.cardTemplates.js
                |-- services.cards.js
                |-- services.groups.js
                |-- services.posts.js
                |-- services.users.js
                |-- services.widgets.js
        |-- _mocks
            |-- mocks.groups.js
            |-- mocks.posts.js
            |-- mocks.users.js
            |-- mocks.widgets.js
14
répondu John Byrne 2017-10-28 04:49:47

la meilleure façon de faire ceci est d'entourer votre arbre dans le triple backticks pour dénoter un bloc de code. Pour plus d'informations, voir les docs markdown: http://daringfireball.net/projects/markdown/syntax#code

7
répondu joe sepi 2014-11-17 15:39:15

vous pouvez utiliser

 tags comme je l'ai fait dans un de mes  projets  .  

2
répondu borngeek 2017-08-24 07:23:56

Vous pouvez également consulter ce arbre-étendue . Il peut être utilisé comme une application en ligne de commande en utilisant noeud >= 6.x.

Il est très similaire à tree , mais a aussi la possibilité de configurer le max de profondeur dans l'arbre, qui est l'une des choses terribles. Vous pouvez aussi filtrer en utilisant le fichier .gitignore .

enter image description here

1
répondu Raúl Otaño 2018-02-15 01:19:47

si vous utilisez Atom editor, vous pouvez utiliser ce paquet pour écrire facilement les arbres ASCII: ASCII-tree

0
répondu Ramtin Soltani 2017-11-27 12:22:25