A CLI tool for finding unused class variables and methods in a TypeScript project.
Table of Contents
@faire/ts-unused-class-members
is hosted on GitHub Packages. To configure npm to download @faire packages from GitHub Packages registry you need to
- Create a personal access token with the
read:packages
scope - Use the command below to add the personal access token to ~/.npmrc
echo "//npm.pkg.github.com/:_authToken=YOUR_TOKEN" >> ~/.npmrc
- Use the command below to configure npm to download @faire packages from GitHub Packages registry
npm config set @faire:registry https://npm.pkg.github.com
In the same directory as your tsconfig.json
, run
npx @faire/ts-unused-class-members
Run ts-unused-class-members
with --help
to see all available CLI options.
Options:
--project Path to the project's tsconfig.json [string]
--path Path to a single directory/file to scan [string]
--ignoreFileRegex Regex pattern for excluding files [string]
These options are optional, and you can also set them in a config file.
By default, ts-unused-class-members
flags every class member that has no references in the project. Depends on the framework/library you use, you may want to tell
the checker to ignore certain class members. You can do that by including a configuration file.
Example config file for a React + MobX project:
ts-unused-class-members.config.js in the project root
module.exports = { ignoreFileRegex: "(?:(\\.d)|(\\.stories)|(\\.test))\\.tsx?$", ignoreMemberNames: [ "render", "state", "componentDidMount", "componentWillUnmount", "componentDidCatch", "componentDidUpdate", "shouldComponentUpdate", "UNSAFE_componentWillReceiveProps", "UNSAFE_componentWillUpdate", "UNSAFE_componentWillMount", ], /** * Ignore members decorated by MobX's @disposeOnUnmount */ ignoreDecoratorNames: ["disposeOnUnmount"], /** * Ignore members initialized with MobX's reaction() * e.g. public myReaction = reaction(...); */ ignoreInitializerNames: ["reaction"], };
ts-unused-class-members
consumes configuration using cosmiconfig, which supports some other config formats too.
- a
ts-unused-class-members
property in package.json - a
ts-unused-class-members.config.js
orts-unused-class-members.config.cjs
CommonJS module exporting an object - a
.ts-unused-class-membersrc
file in JSON or YAML format
You can also tell ts-unused-class-members
to ignore a specific class or class member by prefixing its declaration with // unused-class-members-ignore-next
.
// unused-class-members-ignore-next
class Unused {
...
}
class A {
// unused-class-members-ignore-next
unused = undefined;
...
}
Issues and PRs are welcome!
This project uses semantic-release to automate version management and package publishing, so make sure to follow the commit message conventions when contributing.