Skip to content

Change Request: Remove nodejsScope option of eslint-scope #697

@mdjermanovic

Description

@mdjermanovic

Which packages would you like to change?

  • espree
  • 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.

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

  • I am willing to submit a pull request for this change.

Additional comments

No response

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions