Change Request: Remove `nodejsScope` option of eslint-scope
- Dominant language
- JavaScript
- Stars
- 2.4k
- Forks
- 234
- Avg merge
- 28m
- Merged PRs (30d)
- 2
Description
### Which packages would you like to change?
- [ ] `espree`
- [x] `eslint-scope`
- [ ] `eslint-visitor-keys`
### What problem do you want to solve?
Currently, there are two different ways to enable commonjs scope analysis:
* `sourceType: "commonjs"`
* `nodejsScope: true`
The effect is the same.
Furthermore, when the options are `sourceType: "module"` and `nodejsScope: true`, eslint-scope creates both the `function` scope (commonjs wrapper) and the `module` scope, which seems invalid.
```js
import * as eslintScope from 'eslint-scope';
import * as espree from 'espree';
const code = "class C {}";
const options = {
ecmaVersion: 2025,
sourceType: "module",
nodejsScope: true
};
const ast = espree.parse(code, { range: true, ...options });
const scopeManager = eslintScope.analyze(ast, options);
console.log(scopeManager.scopes.map(scope => scope.type)); // [ 'global', 'function', 'module', 'class' ]
```
### What do you think is the correct solution?
Remove `nodejsScope` option as redundant for enabling commonjs scope analysis, and potentially problematic when used with `sourceType: "module"`.
### Participation
- [x] I am willing to submit a pull request for this change.
### Additional comments
_No response_
Contributor guide
Assessment
This issue has not been assessed yet.