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:
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.
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.
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
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
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
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 .
si vous utilisez Atom editor, vous pouvez utiliser ce paquet pour écrire facilement les arbres ASCII: ASCII-tree