ts-print-tree is a command-line tool that generates a tree-like representation of your TypeScript project structure, including exported members and their signatures. It's perfect for quickly understanding the layout and API of a TypeScript project, or a concise way of summarising your project's structure to AI models like ChatGPT or Claude.
- Generates a tree-like view of your TypeScript project structure
- Lists exported members (functions, classes, interfaces) from each file
- Displays function signatures with parameter types and return types
- Ignores common directories and files (e.g., node_modules, .git)
- Customizable ignore patterns
- Quickly grasp the structure of a new or unfamiliar TypeScript project
- Generate project descriptions for documentation purposes
- Create input for AI models like ChatGPT or Claude to assist with project understanding and development
- Easily share project structure with team members or stakeholders
No installation required! You can run ts-print-tree directly using npx
or bunx
.
Navigate to the root of your TypeScript project (where your tsconfig.json
is located) and run:
npx ts-print-tree
or if you prefer to use Bun:
bunx ts-print-tree
The tool will output a tree-like structure of your project, including files, directories, and exported members.
ts-print-tree/
└── src/
├── index.ts
│ ├── interface TreeNode
│ └── function tree(rootDir?: string, pathFilter?: (path: string) => boolean, visibilityLevel?: VisibilityLevel): TreeNode
└── utils/
└── helper.ts
└── function formatDate(date: Date): string
More comprehensive example output can be found in the test snapshots for this very project.
You can customize ignored patterns and output format by passing arguments to the CLI command. For example:
npx ts-print-tree -- --ignore "docs" --ignore "/\\.(test|spec)\\.ts$/" --list --private
This will ignore files and directories of docs or ending with .test.ts
or .spec.ts
, include private members, and output in list format (which is more efficient for LLM usage).
Run npx ts-print-tree -- --help
to see all available options.
You can also use ts-print-tree programmatically in your TypeScript projects:
import { tree, VisibilityLevel } from 'ts-print-tree';
const projectStructure = tree(
process.cwd(),
(path) => !path.includes('node_modules'),
VisibilityLevel.Public
);
console.log(JSON.stringify(projectStructure, null, 2));
This will give you a structured representation of your project that you can further process or format as needed.
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the ISC License - I hope you find it useful!
- TypeScript team for the excellent Compiler API
- All the open-source contributors who inspire projects like this
Happy exploring! 🕵️♀️🌟