Path: blob/main/docs/rules/no-duplicates.md
829 views
import/no-duplicates
Reports if a resolved path is imported more than once. +(fixable) The --fix option on the [command line] automatically fixes some problems reported by this rule.
ESLint core has a similar rule (no-duplicate-imports), but this version is different in two key ways:
the paths in the source code don't have to exactly match, they just have to point to the same module on the filesystem. (i.e.
./fooand./foo.js)this version distinguishes Flow
typeimports from standard imports. (#334)
Rule Details
Valid:
...whereas here, both ./mod imports will be reported:
The motivation is that this is likely a result of two developers importing different names from the same module at different times (and potentially largely different locations in the file.) This rule brings both (or n-many) to attention.
Query Strings
By default, this rule ignores query strings (i.e. paths followed by a question mark), and thus imports from ./mod?a and ./mod?b will be considered as duplicates. However you can use the option considerQueryString to handle them as different (primarily because browsers will resolve those imports differently).
Config:
And then the following code becomes valid:
It will still catch duplicates when using the same module and the exact same query string:
When Not To Use It
If the core ESLint version is good enough (i.e. you're not using Flow and you are using import/extensions), keep it and don't use this.
If you like to split up imports across lines or may need to import a default and a namespace, you may not want to enable this rule.