deadcode
Version:
Deadcode shows you source files that are not required
95 lines (68 loc) • 2.37 kB
Markdown
# deadcode
Deadcode shows you source files that are not required anywhere given entry point scripts.
## Summary
### What it does
Deadcode list all files not required anywhere in your project and let you remove them.
### What it does not
#### Dynamic requires
Deadcode will ignore dynamic requires but will provide you with a list of files that contain them.
#### Reassigned requires
Deadcode look for import declarations and calls of the _require_ function. In other word if you assign _require_ to another var and use it to load a dependency, it will not handle it.
### Installation
```
$ npm add deadcode --save-dev
```
## Usage
<pre>
$ deadcode --list-all
<span style="color:blue">info</span> 5 dependencies found
├─ /Users/dead-code/demo/index.js
├─ /Users/dead-code/demo/a.js
├─ fs
├─ /Users/dead-code/demo/b.js
└─ /Users/dead-code/demo/c.js
<span style="color:yellow">warning</span> 1 files with dynamic dependencies found
└─ /Users/dead-code/demo/a.js
<span style="color:yellow">warning</span> 1 ignored dependencies found
└─ /Users/dead-code/node_modules/@babel/core/lib/index.js
<span style="color:green">success</span> 0 unparsed dependencies found
<span style="color:green">success</span> 0 unresolved dependencies
<span style="color:yellow">warning</span> <strong>1 dead files found</strong>
└─ /Users/dead-code/demo/d.js
</pre>
You can get help with:
```
$ deadcode --help
```
### Options
- **config**: config file to use
- **entry**: array of entry point files
- **ignore**: array of pattern matching files to ignore
- **src**: array of pattern matching source files
### How to provide options
Options could be:
- provided as command options:
```
$ deadcode --ignore="**/node_modules/**,**/__tests__/**"
```
- loaded from file using the command option `config`:
```
$ deadcode --config=".deadcoderc"
```
- read from the `deadcode` property of your package.json:
```
{
"deadcode": {
"ignore": ["**/node_modules/**"]
}
}
```
### Good to know
You should know that:
- Command options override options in config file.
- Config file options override options in package.json.
- If no entry is provided, the `main` property of your package.json will be used.
## Todo
- resolve dynamic import when possible
- handle reassigned require
- look for dead code in living files