ts-unused-class-members
A CLI tool for finding unused class variables and methods in a TypeScript project.
Table of Contents
-
Getting Started
- Configuration File
- Ignoring a Specific Declaration
- Acknowledgements
Getting Started
Prerequisites
@faire/ts-unused-class-members
is hosted on :octocat: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
Usage
In the same directory as your tsconfig.json
, run
npx @faire/ts-unused-class-members
CLI Options
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.
Configuration 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",
],
ignoreDecoratorNames: ["disposeOnUnmount"],
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
or ts-unused-class-members.config.cjs
CommonJS module exporting an object - a
.ts-unused-class-membersrc
file in JSON or YAML format
Ignoring a Specific Declaration
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
.
class Unused {
...
}
class A {
unused = undefined;
...
}
Contributing
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.
Acknowledgements