import-js / import-js/eslint-plugin-import
`import/namespace` is very slow
Nobody has claimed this yet.
- Dominant language
- JavaScript
- Stars
- 5.9k
- Forks
- 1.5k
- PR merge metrics
- No merged PRs in 30d
Description
In our medium-sized mixed JS/TS codebase, specifically disabling import/namespace significantly reduced our lint times. I haven't found this mentioned by anyone else, so I wanted to share the finding, because it was very surprising.
Our prior configuration ran like this:
Rule | Time (ms) | Relative
:---------------------------------|----------:|--------:
import/namespace | 5762.140 | 64.7%
import/no-relative-packages | 673.212 | 7.6%
import/named | 471.116 | 5.3%
import/no-extraneous-dependencies | 317.690 | 3.6%
import/extensions | 254.717 | 2.9%
Done in 14.53s.
I always assumed this was just the "first rule tax" while the export map is created, but adding "import/namespace": "off" did this for us:
Rule | Time (ms) | Relative
:---------------------------------|----------:|--------:
import/named | 1459.028 | 33.6%
import/no-relative-packages | 577.911 | 13.3%
import/no-duplicates | 408.152 | 9.4%
import/extensions | 401.591 | 9.2%
import/no-extraneous-dependencies | 276.880 | 6.4%
Done in 9.44s.
Given we already use "import/no-namespace": "error", this rule wasn't doing anything for us anyway. With one line we've managed to significantly improve IDE responsiveness.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
The relevant entry point is the import/namespace rule. First reproduce the reported lint timings on a medium-sized mixed JS/TS codebase and compare runs with the rule enabled and disabled. Done means identifying and reducing the rule's unnecessary cost without changing its namespace-validation behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- eslint, javascript, typescript
- Domain
- performance, tooling
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 38/100