Create a .jscpd.json file in your project root to configure jscpd:
{
"threshold": 0,
"reporters": ["html", "console"],
"ignore": ["**/__snapshots__/**", "**/node_modules/**"],
"absolute": true,
"minLines": 5,
"minTokens": 50
}
| Option | Description | Default |
|---|---|---|
--min-lines | Minimum lines in a code block to be detected | 5 |
--min-tokens | Minimum tokens in a code block | 50 |
--max-lines | Maximum lines in a code block | 1000 |
--max-size | Maximum file size in bytes | 100kb |
--threshold | Threshold for duplication percentage | 0 |
--reporters | Reporters to use | console |
--output | Output directory for reports | ./report |
--format | Format for source code | - |
--pattern | Glob pattern for files | - |
--ignore | Patterns to ignore | - |
--gitignore | Use .gitignore patterns | true |
--blame | Show git blame info | false |
--silent | Don't output to console | false |
--absolute | Use absolute paths | false |
--no-symlinks | Don't follow symlinks | false |
--skip-local | Skip local duplicates | false |
--formats-exts | Define custom format extensions | - |
jscpd ./src
jscpd --pattern "**/*.ts" ./src
jscpd --reporters html,json,console ./src
Fail if duplication exceeds 5%:
jscpd --threshold 5 ./src
jscpd --ignore "**/*.test.ts,**/__mocks__/**" ./src
You can also configure jscpd in your package.json:
{
"jscpd": {
"threshold": 0,
"reporters": ["html", "console"],
"ignore": ["**/node_modules/**"],
"absolute": true
}
}