retype-cli
TypeScript refactoring CLI built on ts-morph. AST-aware, safe refactoring.
Commands
Command Purpose
search
Find entities (functions, classes, types)
rename
Rename entity across all files
extract
Move entity to different file
references
Find all usages of an entity
unused
Find unused exports
fix-imports
Fix missing imports
Search
Find function by name
bunx retype-cli search linearGraphQL -p ./src --list
Find exported functions only
bunx retype-cli search --kind function --exported -p ./src --list
Find by regex pattern
bunx retype-cli search "create.*Component" --regex -p ./src --list
Show code body
bunx retype-cli search myFunction --body -p ./src
References
Find all usages of a function
bunx retype-cli references linearGraphQL -p ./src --list
Show all references (not truncated)
bunx retype-cli references linearGraphQL -p ./src --list --all
Rename
Rename with preview (dry run)
bunx retype-cli rename oldName newName -p ./src --preview
Rename without confirmation
bunx retype-cli rename oldName newName -p ./src --yes
Exact match only
bunx retype-cli rename oldName newName -p ./src --exact --yes
Extract
Move entity to a different file, updating all imports automatically.
Extract function to new file
bunx retype-cli extract linearGraphQL ./src/api/linear.ts -p ./src --yes
Interactive extraction
bunx retype-cli extract myHelper ./src/utils/helpers.ts -p ./src
Fix Imports
Find and fix missing imports
bunx retype-cli fix-imports -p ./src
Unused Exports
Find unused exported entities
bunx retype-cli unused -p ./src --list
Common Workflows
Extract API to separate module
1. Find the function
bunx retype-cli search linearGraphQL -p ./src --list
2. Check current references
bunx retype-cli references linearGraphQL -p ./src --list
3. Extract to new file (updates all imports)
bunx retype-cli extract linearGraphQL ./src/api/linear.ts -p ./src --yes
4. Verify
bun run typecheck
Rename across codebase
1. Preview changes
bunx retype-cli rename createComponent createWidget -p ./src --preview
2. Apply changes
bunx retype-cli rename createComponent createWidget -p ./src --yes
Clean up unused exports
1. Find unused
bunx retype-cli unused -p ./src --list
2. Review and remove manually
Options
Option Description
-p, --path
Project root path
-c, --config
Path to tsconfig.json
--list
Output as simple list
--yes
Skip confirmation
--preview
Dry run (rename only)
--exact
Exact match (rename only)
--all
Show all results (references)
vs ast-grep
Task retype-cli ast-grep
Rename symbol ✅ Best ⚠️ Manual
Extract to file ✅ Best ❌ No
Update imports ✅ Auto ⚠️ Manual
Find references ✅ Best ✅ Good
Pattern-based search ⚠️ Limited ✅ Best
Multi-language ❌ TS only ✅ Many
Complex rewrites ❌ No ✅ Best
Use retype-cli for: TypeScript refactoring (rename, move, extract) Use ast-grep for: Pattern matching, multi-language, complex rewrites