CLI Arguments
General
--help
Shortcut: -h
Prints a summary of this page.
--version
Shortcut: -V
Print the version number.
--no-progress
Shortcut: -n
Don’t show dynamic progress updates. Progress is automatically disabled in CI environments.
--no-config-hints
Suppress configuration hints.
knip-bun
Run Knip using the Bun runtime (instead of Node.js + jiti).
This is equal to bunx --bun knip
Requires Bun to be installed. Also see known issues for the type of issues this might help with.
NO_COLOR
The default reporters use the NO_COLOR friendly picocolors:
Troubleshooting
--debug
Shortcut: -d
Show debug output.
--performance
Use this flag to get the count and execution time of potentially expensive functions in a table. Example:
name
: the internal Knip function namesize
: number of function invocationsmin
: the fastest invocationmax
: the slowest invocationmedian
: the median invocationsum
the accumulated time of all invocations
This is not yet available in Bun, since it does not support
performance.timerify
(GitHub issue).
--trace
Trace exports to see where they are imported.
Also see Trace.
--trace-export [name]
Trace export name to see where it’s imported. Implies —trace.
--trace-file [path]
Trace file to see where its exports are imported. Implies —trace.
Configuration
--config [file]
Use an alternative path for the configuration file. Default locations:
knip.json
knip.jsonc
.knip.json
.knip.jsonc
knip.js
knip.ts
package.json#knip
Shortcut: -c
--tsConfig [file]
Use an alternative path for the TypeScript configuration file.
Default location: tsconfig.json
--workspace [dir]
Lint a single workspace including its ancestor and dependent workspaces. The default behavior is to lint all configured workspaces.
Shortcut: -W
--directory [dir]
Default: cwd
(current directory)
Run the process from a different directory.
--no-gitignore
Ignore .gitignore
files.
--include-entry-exports
When a repository is self-contained or private, you may want to include entry files when reporting unused exports:
Also see includeEntryExports.
--include-libs
Getting false positives for exports consumed by external libraries? Try the
--include-libs
flag:
Also see external libs.
--isolate-workspaces
By default, Knip optimizes performance using workspace sharing to existing
TypeScript programs, based on the compatibility of their compilerOptions
. This
flag disables this behavior and creates one program per workspace, which is
slower but memory is spread more evenly over time.
Modes
--production
Lint only production source files. This excludes:
- entry files defined by plugins:
- test files
- configuration files
- Storybook stories
devDependencies
frompackage.json
Read more at Production Mode.
--strict
Isolate workspaces and consider only direct dependencies. Implies production mode.
Read more at Production Mode.
--fix
Read more at auto-fix.
--cache
Enable caching.
Consecutive runs are 10-40% faster as the results of file analysis (AST traversal) are cached. Conservative. Cache strategy based on file meta data (modification time + file size).
--cache-location
Provide alternative cache location.
Default location: ./node_modules/.cache/knip
--watch
Watch current directory, and update reported issues when a file is modified, added or deleted.
Watch mode focuses on imports and exports in source files. During watch mode,
changes in package.json
and/or node_modules
are not supported.
Filters
Available issue types when filtering output using --include
or
--exclude
:
files
dependencies
optionalPeerDependencies
unlisted
unresolved
exports
nsExports
classMembers
types
nsTypes
enumMembers
duplicates
--exclude
Exclude provided issue types from report. Can be comma-separated or repeated.
Example:
--include
Report only provided issue types. Can be comma-separated or repeated.
Example:
--dependencies
Shortcut to include all types of dependency issues:
--exports
Shortcut to include all types of export issues:
--experimental-tags
Deprecated. Use —tags instead.
--tags
Exports can be tagged with known or arbitrary JSDoc/TSDoc tags:
And then include (+
) or exclude (-
) these tagged exports from the report
like so:
This way, you can either focus on or ignore specific tagged exports with tags you define yourself. This also works for individual class or enum members.
The default directive is +
(include) and the @
prefix is ignored, so the
notation below is valid and will report only exports tagged @custom
or
@internal
:
Reporters & Preprocessors
--reporter [reporter]
Available reporters:
symbols
(default)compact
codeowners
json
markdown
Can be repeated. Example:
Also see Reporters & Preprocessors.
--reporter-options [json]
Pass extra options to the preprocessor (as JSON string, see —reporter-options example)
Example:
--preprocessor [preprocessor]
Preprocess the results before providing it to the reporters.
Can be repeated. Examples:
--preprocessor-options [json]
Pass extra options to the preprocessor as JSON string.
Also see Reporters & Preprocessors.
Exit code
The default exit codes:
Code | Description |
---|---|
0 | Knip ran successfully, no lint issues |
1 | Knip ran successfully, but there is at least one lint issues |
2 | Knip did not run successfully due to bad input or internal error |
--no-exit-code
Always exit with code zero (0
), even when there are lint issues.
--max-issues
Maximum number of issues before non-zero exit code. Default: 0
ISC License © 2024 Lars Kappert