ts-prune-ex
TypeScript icon, indicating that this package has built-in type declarations

0.0.5 • Public • Published

npm GitHub issues

ts-prune-ex

ts-prune is a library that finds potentially unused exports in your Typescript project with zero configuration. I expanded and added an '-rf' configuration option to find and remove unused files based on those unused exports.

※The option is experimental. I recommend you to checkout to a new branch to test out before actually using it.

Getting Started

ts-prune-ex exposes a cli that reads your tsconfig file and prints out all the unused exports in your source files.

Installing

Install ts-prune-ex with yarn or npm

# npm
npm install ts-prune-ex --save-dev
# yarn
yarn add -D ts-prune-ex

Usage

You can install it in your project and alias it to a npm script in package.json.

{
  "scripts": {
    "find-deadcode": "ts-prune-ex"
  }
}

If you want to run against different Typescript configuration than tsconfig.json:

ts-prune-ex -p tsconfig.dev.json

When using in a NextJS project

NextJS has files with default exports under src/pages, and these exports will be detected as unused by ts-prune since they are not imported anywhere. Because of this, ts-prune-ex will detect files under src/pages as unused.

To solve this issue, you need to use -i 'src/ignore-this-path' option like below.

ts-prune-ex -i 'src/pages'

this will cause ts-prune to ignore all files under 'src/pages'.

Configuration

ts-prune-ex supports CLI and file configuration via cosmiconfig (all file formats are supported).

Configuration options

  • -p, --project - tsconfig.json path(tsconfig.json by default)
  • -i, --ignore - errors ignore RegExp pattern
  • -e, --error - return error code if unused exports are found
  • -s, --skip - skip these files when determining whether code is used. (For example, .test.ts? will stop ts-prune from considering an export in test file usages)
  • -rf, --remove_files - find unused files based on unused exports and print those files, and then you can choose to proceed to delete them or not.

CLI configuration options:

ts-prune-ex -p my-tsconfig.json -i my-component-ignore-patterns?

Configuration file example .ts-prunerc:

{
  "ignore": "my-component-ignore-patterns?"
}

FAQ

How do I get the count of unused exports?

ts-prune-ex | wc -l

How do I ignore a specific path?

You can either,

1. Use the -i, --ignore configuration option:
ts-prune-ex --ignore 'src/ignore-this-path'
2. Use grep -v to filter the output:
ts-prune-ex | grep -v src/ignore-this-path

How do I ignore multiple paths?

You can either,

1. Use the -i, --ignore configuration option:
ts-prune-ex --ignore 'src/ignore-this-path|src/also-ignore-this-path'
2. Use multiple grep -v to filter the output:
ts-prune-ex | grep -v src/ignore-this-path | grep -v src/also-ignore-this-path

How do I ignore a specific identifier?

You can either,

1. Prefix the export with // ts-prune-ignore-next
// ts-prune-ignore-next
export const thisNeedsIgnoring = foo;
2. Use grep -v to ignore a more widely used export name
ts-prune-ex | grep -v ignoreThisThroughoutMyCodebase

LICENSE

Copyright (c) 2023 Nadeesha Cabral

Released under the MIT license

https://opensource.org/licenses/mit-license.php

Dependencies (7)

Dev Dependencies (13)

Package Sidebar

Install

npm i ts-prune-ex

Weekly Downloads

171

Version

0.0.5

License

MIT

Unpacked Size

46.5 kB

Total Files

41

Last publish

Collaborators

  • yuthon