web-dev-qa-db-fra.com

Existe-t-il un moyen de représenter une arborescence de répertoires dans un fichier Github README.md?

Dans ma documentation Githubs , je veux représenter une arborescence de répertoires comme celle-ci:

enter image description here

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

Donc, fondamentalement, comme cette question , mais je me demande s’il existe une solution spécifique à Github.

48
user1694077

Pas directement, non. Vous devez le créer et le mettre vous-même. En supposant que vous utilisez une boîte * nix localement et utilisez utf, alors tree le générera bien (je crois que c'est ce qui a généré l'exemple que vous avez utilisé ci-dessus).

En supposant que vous vouliez dire le readme.md en tant que cible de la documentation, alors je pense que la seule façon de l’automatiser serait un hook git de pré-validation qui exécutait tree et l’intégrait dans votre fichier readme. Vous souhaitez effectuer un diff pour vous assurer de ne mettre à jour le fichier Lisez-moi que si le résultat a été modifié.

Otoh si vous maintenez des documents séparés via des pages github, alors ce que vous pouvez faire, est de passer à l’utilisation de jekyll (ou d’un autre générateur) localement et de pousser le pages vous-même. Vous pouvez ensuite éventuellement implémenter les modifications souhaitées sous forme de modifications plugin/script Shell */manual (si elles ne varient pas beaucoup), ou utiliser la même méthode que ci-dessus.

* Si vous l'intégrez à un crochet de validation, vous pouvez éviter d'ajouter des étapes supplémentaires pour modifier vos pages.

20
Oliver Matthews

J'ai résolu le problème de cette façon:

  1. Insérer la commande tree dans bash.

    Exemple

    enter image description here

  2. Créez un fichier README.md dans le référentiel github et copiez la page du bash

  3. Insérer le code de démarcation

    Exemple

    enter image description here

  4. Voir la sortie et être heureux =)

    enter image description here

57
Jonathas B. C.

J'ai créé un module de nœud pour automatiser cette tâche: mddir

Usage

noeud mddir "../relative/path/"

Pour installer: npm install mddir -g

Pour générer un démarquage pour le répertoire en cours: mddir

Pour générer un chemin absolu quelconque: mddir/absolute/path

Pour générer un chemin relatif: mddir ~/Documents/what.

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

Ignore actuellement les dossiers node_modules et .git.

Dépannage

Si vous recevez l'erreur 'noeud\r: Aucun fichier ou répertoire de ce type', le problème est que votre système d'exploitation utilise différentes fins de ligne et que mddir ne peut pas les analyser sans que vous ayez défini explicitement le style de fin de ligne sur Unix. Cela affecte généralement Windows, mais aussi certaines versions de Linux. La définition des fins de ligne sur le style Unix doit être effectuée dans le dossier bin global de mddir npm.

Correction des fins de ligne

Obtenez le chemin du dossier bin npm avec:

npm config get prefix

Cd dans ce dossier

brasser installer dos2unix

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

Ceci convertit les fins de ligne en Unix au lieu de Dos

Exécutez ensuite normalement avec: node mddir "../relative/path/".

Exemple de structure de fichier de démarquage générée '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
15
John Byrne

Pour ce faire, la meilleure solution consiste à entourer votre arbre des triples backticks pour désigner un bloc de code. Pour plus d'informations, voir la documentation de Markdown: http://daringfireball.net/projects/markdown/syntax#code

8
joe sepi

Vous pouvez également vérifier ce package arborescence étendue . Il peut être utilisé en tant qu'application en ligne de commande en utilisant node> = 6.x.

Il ressemble beaucoup à tree mais il offre également la possibilité de configurer la profondeur maximale dans l’arbre, ce qui en fait l’une des choses les plus terribles. Vous pouvez aussi filtrer en utilisant .gitignore fichier.

enter image description here

3
Raúl Otaño

Vous pouvez utiliser les balises <pre> comme je l’ai fait dans l’un de mes projets .

3
borngeek

Aucune des solutions ci-dessus n'a fonctionné pour moi complètement sur mon mac.

La meilleure solution que j'ai trouvée consiste à utiliser l'utilitaire créé ici.

https://github.com/michalbe/md-file-tree

Une fois que vous avez installé l’utilitaire npm install md-file-tree -g alors vous pouvez simplement exécuter pour obtenir tous les fichiers

md-file-tree . > README.md
0
nagendra547

La commande simple tree fera le travail. Par exemple: tree -o readme.md va imprimer l’arborescence de votre répertoire de travail actuel et l’écrire dans readme.md. Ensuite, ouvrez le fichier readme.md dans un éditeur de texte tel que Sublime et enroulez son contenu dans une paire de triple backticks (`` `).

Pour votre information: vous devrez peut-être créer l’arborescence de l’installation sous OSX si elle n’est pas déjà installée. Sous Linux et Windows, cela devrait fonctionner correctement. Dans les fenêtres également, vous devrez peut-être remplacer le trait d'union par une barre oblique.

J'espère que ça aide.

0
Gyan