Migrating from ts-unused-exports
ts-unused-exports reports exported symbols that are never used in a TypeScript project. rev-dep covers that with unusedExportsDetection, plus orphan files, dependencies, cycles, and architecture rules.
Why migrate​
- Speed and a single pass. rev-dep is Go-based and runs every check at once - faster on large repos.
- One tool instead of several. ts-unused-exports only finds unused exports. rev-dep also covers orphan files, unused/missing dependencies, circular imports, module boundaries, and more.
- Autofix. rev-dep can remove the dead
exportfor you.
What carries over, what changes​
- Covered well: unused exported functions, variables, types, interfaces, enums.
--findCompletelyUnusedFiles(files whose every export is unused) maps to rev-dep'sorphanFilesDetection.- Different model: ts-unused-exports reads your
tsconfigfiles/includes; rev-dep traces from entry points, so defineprodEntryPoints/devEntryPointsto keep public-API exports from being reported.
Feature mapping​
| ts-unused-exports | rev-dep |
|---|---|
| unused exports | unusedExportsDetection |
--allowUnusedTypes / --allowUnusedEnums | ignoreTypeExports: true (types) |
--excludeDeclarationFiles | ignoreFiles: ["**/*.d.ts"] |
--ignoreFiles (regex) | ignoreFiles (globs) |
--ignoreLocallyUsed | default (only cross-file usage counts) |
--findCompletelyUnusedFiles | orphanFilesDetection |
// ts-unused-exports:disable-next-line | ignore / ignoreExports in config |
--exitWithCount | config run exits non-zero on findings |
Translating your config​
ts-unused-exports is CLI-driven:
ts-unused-exports tsconfig.json --excludeDeclarationFiles --allowUnusedTypes --ignoreFiles="\.stories\."
becomes a rev-dep.config.jsonc:
{
"rules": [
{
"path": ".",
"prodEntryPoints": ["src/index.ts"],
"devEntryPoints": ["**/*.test.ts"],
"unusedExportsDetection": {
"enabled": true,
"autofix": true,
"ignoreTypeExports": true,
"ignoreFiles": ["**/*.d.ts", "**/*.stories.tsx"]
}
}
]
}
--ignoreFiles takes regular expressions; rev-dep uses glob patterns. For per-export exceptions, use ignore/ignoreExports - see unused exports options.
Running it​
# ts-unused-exports
npx ts-unused-exports tsconfig.json
# rev-dep
rev-dep config run
rev-dep config run --fix
Next steps​
- Entry points determine which exports are "public" - set them first.
- Monorepo integration guide for per-workspace setup.