A high-performance tool that bundles local code dependencies into a single markdown file by following import statements from an entry point.
Packlet traverses your codebase starting from any JavaScript or TypeScript file, discovers all locally imported files, and bundles them into a single document. Unlike tools that bundle entire repositories, Packlet only includes files that are actually imported, making it ideal for sharing specific features or debugging dependency chains.
cargo install packletOr build from source:
git clone https://github.com/kirillleventcov/packlet
cd packlet
cargo build --release
cargo install --path .Bundle dependencies from an entry point:
packlet bundle src/index.tsThis creates index.packlet.md containing the dependency tree and all discovered local files.
# Specify output location
packlet bundle src/app.tsx --output bundle.md
# Limit traversal depth
packlet bundle src/index.js --max-depth 3
# Filter by extensions
packlet bundle main.ts --extensions ts,tsx
# Visualize dependency tree only
packlet graph src/index.jsFast - Parallel dependency analysis using async Rust
Smart - Understands ES modules, CommonJS, dynamic imports, and TypeScript paths
Local-only - Excludes node_modules and external packages automatically
Framework-aware - Handles React, Vue, Svelte, and Angular patterns
Configurable - Control traversal depth, file types, and output format
The generated markdown includes:
- A visual dependency tree showing the import relationships
- The complete contents of each discovered file
- Metadata about when the bundle was created
Given this structure:
src/
index.ts
utils/helper.ts
components/Button.tsx
Running packlet bundle src/index.ts produces a markdown file with the dependency tree and all three files' contents, properly formatted with syntax highlighting.
Currently supports JavaScript and TypeScript with full understanding of:
- ES6 imports/exports
- CommonJS require/module.exports
- Dynamic imports
- TypeScript path mappings
- JSX/TSX files
Create packlet.toml in your project root for persistent settings:
[output]
format = "markdown"
[javascript]
resolution = "typescript"
tsconfig_path = "./tsconfig.json"
[traversal]
max_depth = 50MIT