Filtering Examples¶
Practical recipes for narrowing what Recursivist shows. For the rules behind these, see Pattern Filtering.
Note
--exclude-pattern and --include-pattern match a file's name, not its path. To filter by location, use --exclude (directory names) or --ignore-file (gitignore-style, path-aware).
Excluding Directories and Extensions¶
# Directories
recursivist visualize --exclude node_modules --exclude .git --exclude venv
# Extensions (leading dot optional)
recursivist visualize --exclude-ext .pyc --exclude-ext .log --exclude-ext .cache
Glob Patterns¶
# Exclude test files anywhere in the tree
recursivist visualize --exclude-pattern "*.test.js" --exclude-pattern "*.spec.js"
# Exclude Python bytecode
recursivist visualize --exclude-pattern "*.pyc"
# Exclude minified and bundled assets
recursivist visualize --exclude-pattern "*.min.js" --exclude-pattern "*.bundle.js"
Regular Expressions¶
# Files named test_*.py
recursivist visualize --exclude-pattern "^test_.*\.py$" --regex
# JavaScript and TypeScript test files
recursivist visualize --exclude-pattern ".*\.(spec|test)\.(js|ts)x?$" --regex
Include Patterns¶
Include patterns restrict the view to files whose names match. A file must match at least one include pattern to appear (unless removed by an exclude pattern or excluded extension, which take priority):
# Source and docs by extension
recursivist visualize --include-pattern "*.js" --include-pattern "*.ts" --include-pattern "*.md"
# Only Python files (regex)
recursivist visualize --include-pattern ".*\.py$" --regex
Ignore Files¶
For path-aware, gitignore-style filtering, use an ignore file:
recursivist visualize --ignore-file .gitignore
recursivist visualize --ignore-file .recursivist-ignore
Example .recursivist-ignore:
# Dependencies and build output
node_modules/
venv/
dist/
build/
# Logs and caches
*.log
.cache/
# Editor files
.vscode/
.idea/
*.swp
Combining Filters¶
recursivist visualize \
--exclude node_modules --exclude .git --exclude build \
--exclude-ext .pyc --exclude-ext .log \
--exclude-pattern "*.test.js" \
--include-pattern "*.js" --include-pattern "*.md" \
--ignore-file .gitignore
This keeps .js and .md files, drops .test.js files and excluded extensions, prunes the listed directories, and also applies the ignore file.
Language-Specific Recipes¶
Python¶
recursivist visualize \
--exclude __pycache__ --exclude .pytest_cache --exclude .venv --exclude venv \
--exclude-ext .pyc --exclude-ext .pyo \
--exclude-pattern "test_*.py" \
--ignore-file .gitignore
JavaScript / TypeScript¶
recursivist visualize \
--exclude node_modules --exclude dist --exclude build --exclude coverage \
--exclude-ext .map --exclude-ext .log \
--exclude-pattern "*.test.js" --exclude-pattern "*.spec.ts" --exclude-pattern "*.min.js" \
--ignore-file .gitignore
Java / Maven¶
recursivist visualize \
--exclude target --exclude .idea \
--exclude-ext .class --exclude-ext .jar \
--exclude-pattern "*Test.java" \
--ignore-file .gitignore
Filtering with Statistics¶
Pair filters with a metric sort to surface what matters:
# Largest source files
recursivist visualize --exclude node_modules --exclude .git --sort-by-size
# Most recently changed files
recursivist visualize --exclude node_modules --exclude .git --sort-by-mtime
Filtering in Export and Compare¶
Every filtering option works the same way with export and compare: