Skip to content

Auto-fix

WARNING: This is an experimental feature. Make sure to run in a VCS/Git repository so you can review and undo changes if necessary.

Run Knip as you normally would, and then run it again with the --fix flag to let Knip automatically apply fixes. Currently includes:

  • Remove export keyword for unused exports
  • Remove export keyword for unused types
  • Remove unused dependencies and devDependencies from package.json
  • Works across workspaces in a monorepo
Terminal window
knip --fix

Use --fix-type to fix only specific issue types (exports, types and/or dependencies). Example:

Terminal window
knip --fix-type exports,types

Example Result

The export keyword for unused exports is removed:

file.js
export default class MyClass {}
class MyClass {}

Note that also the default keyword was removed here.

Sometimes a line can be completely removed safely:

file.js
module.exports.UNUSED = 1;
module.exports['ACCESS'] = 1;

Unused dependencies are removed from package.json:

package.json
{
"name": "my-package",
"dependencies": {
"rimraf": "*",
"unused-dependency": "*"
"rimraf": "*"
},
"devDependencies": {
"unreferenced-package": "5.3.3"
}
"devDependencies": {}
}

Post-fix

  • You may want to run tools like eslint --fix or prettier --write to fix the remaining issues.
  • Verify changes in package.json and update dependencies using your package manager:
Terminal window
npm install

Notes

Nothing is set in stone, but some ideas include:

  • Add unlisted (dev) dependencies to package.json
  • Remove unused files
  • Remove unused class and enum members
  • Remove empty export declarations after the fact, e.g.:
export { }
export const { , } = { a, b };
export const [, ] = [c, d];

ISC License © 2024 Lars Kappert