내 Githubs repos 문서에서 다음과 같은 디렉토리 트리 구조를 나타내고 싶습니다.
ascii 아트로 만드는 것 외에도 Github 맛 마크 다운으로 할 수있는 방법이 있습니까?
그래서 기본적 으로이 질문 과 같지만 github 특정 솔루션이 있는지 궁금합니다.
내 Githubs repos 문서에서 다음과 같은 디렉토리 트리 구조를 나타내고 싶습니다.
ascii 아트로 만드는 것 외에도 Github 맛 마크 다운으로 할 수있는 방법이 있습니까?
그래서 기본적 으로이 질문 과 같지만 github 특정 솔루션이 있는지 궁금합니다.
답변:
직접적으로는 아닙니다. 당신은 그것을 손으로 만들어서 직접 넣어야 할 것입니다. * nix 상자를 로컬에서 사용하고 utf를 사용하고 있다고 가정하면 tree 가 멋지게 생성 할 것입니다 (위에서 사용한 예제를 생성 한 것이라고 생각합니다).
readme.md
문서 대상 으로을 의미한다고 가정하면 자동화 할 수있는 유일한 방법은 실행 tree
하여 readme 파일에 포함 시키는 git pre-commit 후크 일 것입니다 . 출력이 변경된 경우에만 readme를 업데이트했는지 확인하기 위해 diff를 수행하고 싶습니다.
Otoh 만약 당신이 github 페이지를 통해 별도의 문서를 유지한다면, 당신이 할 수있는 일은 로컬에서 jekyll (또는 다른 생성기)을 사용하고 정적 페이지를 직접 푸시하는 것으로 전환하는 것입니다. 그런 다음 플러그인 / 셸 스크립트 * / 수동 변경 (별로 다르지 않을 경우)으로 원하는 변경 사항을 구현하거나 위와 동일한 방법을 사용할 수 있습니다.
* 커밋 후크에 통합하면 페이지 변경에 추가 단계를 추가하지 않아도됩니다.
트릭을 수행하는 작은 스크립트를 작성했습니다.
#!/bin/bash
#File: tree-md
tree=$(tree -tf --noreport -I '*~' --charset ascii $1 |
sed -e 's/| \+/ /g' -e 's/[|`]-\+/ */g' -e 's:\(* \)\(\(.*/\)\([^/]\+\)\):\1[\4](\2):g')
printf "# Project tree\n\n${tree}"
$ tree
.
├── dir1
│ ├── file11.ext
│ └── file12.ext
├── dir2
│ ├── file21.ext
│ ├── file22.ext
│ └── file23.ext
├── dir3
├── file_in_root.ext
└── README.md
3 directories, 7 files
$ ./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)
(링크는 Stackoverflow에 표시되지 않습니다 ...)
프로젝트 트리이 작업을 자동화하기 위해 노드 모듈을 만들었습니다. mddir
노드 mddir "../relative/path/"
설치하려면 : npm install mddir -g
현재 디렉토리에 대한 마크 다운을 생성하려면 : mddir
절대 경로를 생성하려면 : mddir / absolute / path
상대 경로를 생성하려면 : mddir ~ / Documents / whatever.
md 파일은 작업 디렉토리에 생성됩니다.
현재 node_modules 및 .git 폴더를 무시합니다.
'node \ r : No such file or directory'오류가 표시되면 운영 체제가 다른 줄 끝을 사용하고 mddir이 명시 적으로 줄 끝 스타일을 Unix로 설정하지 않으면이를 구문 분석 할 수 없다는 문제입니다. 이것은 일반적으로 Windows뿐만 아니라 일부 Linux 버전에도 영향을 미칩니다. 줄 끝을 Unix 스타일로 설정하는 작업은 mddir npm 전역 bin 폴더 내에서 수행해야합니다.
다음을 사용하여 npm bin 폴더 경로를 가져옵니다.
npm config get prefix
해당 폴더에 CD
양조 설치 dos2unix
dos2unix lib / node_modules / mddir / src / mddir.js
이것은 줄 끝을 Dos 대신 Unix로 변환합니다.
그런 다음 node mddir "../relative/path/"를 사용하여 정상적으로 실행합니다.
|-- .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
node_modules/mddir/src/
디렉토리 에서 실행할 필요가 없도록 만드는 방법이 있습니까? 예를 들어 node ~./src > dir-struct.txt
내 프로젝트 디렉토리에서 실행 하고 dir-struct.txt의 내용을 내 마크 다운에 직접 붙여넣고 싶습니다.
이를 수행하는 가장 좋은 방법은 트리를 삼중 백틱으로 둘러 싸서 코드 블록을 나타내는 것입니다. 자세한 정보는 마크 다운 문서를 참조하십시오 : http://daringfireball.net/projects/markdown/syntax#code
위의 솔루션 중 어느 것도 Mac에서 완전히 작동하지 않았습니다.
내가 찾은 가장 좋은 해결책은 여기에서 만든 유틸리티를 사용하는 것입니다.
https://github.com/michalbe/md-file-tree
유틸리티 npm install md-file-tree -g
를 설치하고 나면 간단히 실행하여 모든 파일 트리를 얻을 수 있습니다.
md-file-tree . > README.md
여기 git alias
저에게 유용한 유용한 정보 가 있습니다.
git config --global alias.tree '! git ls-tree --full-name --name-only -t -r HEAD | sed -e "s/[^-][^\/]*\// |/g" -e "s/|\([^ ]\)/|-- \1/"'
다음은 출력입니다. git tree
jonavon@XPS13:~/projects/roman-numerals$ git tree
.gitignore
pom.xml
src
|-- main
| |-- java
| | |-- com
| | | |-- foxguardsolutions
| | | | |-- jonavon
| | | | | |-- AbstractFile.java
| | | | | |-- roman
| | | | | | |-- Main.java
| | | | | | |-- Numeral.java
| | | | | | |-- RomanNumberInputFile.java
| | | | | | |-- RomanNumeralToDecimalEvaluator.java
|-- test
| |-- java
| | |-- com
| | | |-- foxguardsolutions
| | | | |-- jonavon
| | | | | |-- roman
| | | | | | |-- InterpretSteps.java
| | | | | | |-- RunCukesTest.java
| |-- resources
| | |-- com
| | | |-- foxguardsolutions
| | | | |-- jonavon
| | | | | |-- roman
| | | | | | |-- Interpret.feature
| | |-- sample-input.txt
비교 가능한 tree
명령
jonavon@XPS13:~/projects/roman-numerals$ tree -n
.
├── pom.xml
├── src
│ ├── main
│ │ └── java
│ │ └── com
│ │ └── foxguardsolutions
│ │ └── jonavon
│ │ ├── AbstractFile.java
│ │ └── roman
│ │ ├── Main.java
│ │ ├── Numeral.java
│ │ ├── RomanNumberInputFile.java
│ │ └── RomanNumeralToDecimalEvaluator.java
│ └── test
│ ├── java
│ │ └── com
│ │ └── foxguardsolutions
│ │ └── jonavon
│ │ └── roman
│ │ ├── InterpretSteps.java
│ │ └── RunCukesTest.java
│ └── resources
│ ├── com
│ │ └── foxguardsolutions
│ │ └── jonavon
│ │ └── roman
│ │ └── Interpret.feature
│ └── sample-input.txt
└── target
├── classes
│ └── com
│ └── foxguardsolutions
│ └── jonavon
│ ├── AbstractFile.class
│ └── roman
│ ├── Main.class
│ ├── Numeral.class
│ ├── RomanNumberInputFile.class
│ └── RomanNumeralToDecimalEvaluator.class
├── generated-sources
│ └── annotations
└── maven-status
└── maven-compiler-plugin
└── compile
└── default-compile
├── createdFiles.lst
└── inputFiles.lst
30 directories, 17 files
분명히 tree는 더 나은 출력을 가지고 있지만 내 .gitignore 파일을 사용하고 싶습니다. 내 컴파일 된 콘텐츠가 표시되지 않도록
Windows에서 작업하는 경우 tree /f
명령 프롬프트에서 원하는 디렉토리 내부에 작성 하십시오. 이것은 당신의 일을해야합니다. 내 트리플 백틱을 둘러싼 마크 다운에 출력을 복사하여 붙여 넣을 수 있습니다. 즉 '' '{tree structure here}' ''
빠른 솔루션을 원하는 사람들을 위해 :
터미널에 다음 명령을 입력하여 트리의 출력과 유사한 출력을 콘솔로 가져 오는 방법이 있습니다.
ls -R YOURFOLDER | grep ':$' | sed -e 's/:$//' -e 's/[^\/]*\//| /g' -e 's/| \([^|]\)/|–– \1/g'
이 대안은이 문서에서 언급됩니다 : https://wiki.ubuntuusers.de/tree/
그런 다음 Jonathas BC의 답변에서 언급했듯이 출력을 복사하고 코드 블록 백틱을 사용하여 .md 파일 내에 캡슐화 할 수 있습니다.
그러나 노드 프로젝트의 모든 노드 모듈 폴더도 출력한다는 점에 유의하십시오. 그리고 나무에서 다음과 같이 할 수 있습니다.
tree -I node_modules
노드 모듈 폴더를 제외합니다.
bash에 명령 트리를 삽입하십시오.
또한 DOS 명령 "트리"가 있습니다. 다음 명령을 사용하여 각 하위 디렉토리의 디렉토리 경로와 파일을 표시 할 수 있습니다.
tree /F