Skip to content

Visualise any GitHub repository folder structure. Available as a web app, CLI tool, and node.js library.

License

Notifications You must be signed in to change notification settings

mgks/GitHubTree

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

GitHubTree

GitHubTree is a high-performance repository visualiser.

release version npm downloads stars license

image

GitHubTree allows you to explore, navigate, and generate ASCII directory trees for any GitHub repository without cloning. Available as Web App, CLI Tool, and Node.js Library.

Features

  • Instant Search: Visualize any public repository (e.g., facebook/react).
  • Smart Branch Detection: Automatically detects if a branch exists (e.g., main vs master) and switches to the default branch if needed.
  • Private Repo Access: Securely access your private repositories using a Personal Access Token (saved locally to your browser).
  • Smart Copy: Copy the entire directory tree as text, or copy specific file paths.
  • Visual Styles: Toggle between Classic (└──), Slashed (/src), Minimal, and ASCII (+--).
  • Deep Linking: Share links to specific repositories and branches (e.g., /repo/mgks/dhwani/main).

For Developers: The CLI

Generate directory trees directly in your terminal. Perfect for documentation and quick checks.

Usage (No Install)

Run via npx to fetch a tree instantly:

npx gh-tree user/repo

Installation (Global)

npm install -g gh-tree

Commands & Flags

gh-tree <user/repo> [flags]

Flags:
  --branch, -b <name>   Specify branch (default: main)
  --icons               Show file/folder icons in output
  --token, -t <key>     Use a specific GitHub Token
  --save-token <key>    Save a token globally for future use
  --help                Show help

Example:

gh-tree facebook/react --icons --branch main

For Builders: The NPM Package

Use the core engine to fetch trees and generate ASCII structures in your own applications.

Installation

npm install gh-tree

Usage

import { GitHubTree } from 'gh-tree';

// 1. Initialize (Token optional, but recommended for higher rate limits)
const gt = new GitHubTree(process.env.GITHUB_TOKEN);

// 2. Fetch Tree
try {
    const { tree } = await gt.getTree('mgks/githubtree', 'main');
    
    // 3. Sort & Generate ASCII
    const sorted = gt.sortTree(tree, 'folder-az');
    const output = gt.generateAsciiTree(sorted, { icons: true });
    
    console.log(output);
} catch (err) {
    console.error(err);
}

API Reference

new GitHubTree(token?)

Creates a new instance.

  • token (string, optional): GitHub Personal Access Token.

getTree(repo, branch?)

Fetches the raw recursive tree from GitHub API.

  • Returns: { tree: Array, truncated: Boolean }

sortTree(tree, method?)

Sorts the tree array.

  • method: 'folder-az' (default), 'folder-za', 'alpha-az', 'alpha-za'.

generateAsciiTree(tree, options?)

Converts the tree array into a formatted string.

  • options.icons: Boolean. If true, adds emojis (πŸ“/πŸ“„).

Development (Monorepo)

This repository is organized as a Monorepo.

  • packages/core: The logic, API fetcher, and CLI tool.
  • packages/web: The Vite-based Web Application.
  • tools/: Scripts for generating SEO static pages.

Local Setup

  1. Clone:

    git clone https://github.com/mgks/GitHubTree.git
    cd GitHubTree
  2. Install:

    npm install
  3. Run Web App:

    npm run dev
  4. Build & Generate SEO Pages:

    npm run deploy

License

MIT

{ github.com/mgks }

Website Badge Sponsor Badge

About

Visualise any GitHub repository folder structure. Available as a web app, CLI tool, and node.js library.

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Contributors 3

  •  
  •  
  •