You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
One of our top priorities moving forward is implementing language plugins, which will allow ESLint to formally support linting languages other than JavaScript. As part of that effort, we'll be consolidating all of the JavaScript-specific functionality into the @eslint/js plugin.
Key Points
All JavaScript-related functionality will move to the @eslint/js package, including:
The @eslint/js package will live in its own repository separate from the core
The core will become a language-agnostic utility
This separation will allow us to move forward with a core rewrite with minimal disruption
The current packages (espree, eslint-scope, etc.) are primarily intended for use with ESLint. We don't currently accept feature requests that don't benefit ESLint directly.
How to organize @eslint/js?
The question we need your help answering is how to organize the @eslint/js package going forward. There are two options.
Option 1: Monorepo plus separate packages
The source is in a single repository with separate packages for the parser, scope analyzer, etc.
Those packages may or may not reflect the current package names (espree, eslint-scope, etc.)
The @eslint/js package depends on the other packages in the repo.
Pros: People can use just the package they want, making for smaller downloads when they are installed. (No one needs to install all the rules just to use the parser.)
Cons: More overhead to manage.
Option 2: Single package with tree-shakeable entrypoints
The source is a traditional repository with each component contained within.
The @eslint/js package has separate entrypoints for the different components, such as @eslint/js/parser, that are tree-shakeable to avoid bundling the entire package when you just want to use one or two components.
Pros: Easier maintenance and management; makes it clear that all components are primarily intended for use with ESLint.
Cons: Those who want to use an individual component need to download the entire package, which may be quite large.
What is your preferred approach for how `@eslint/js` is implemented?
Monorepo plus separate packages
73%
Single package containing tree-shakeable entrypoints
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
One of our top priorities moving forward is implementing language plugins, which will allow ESLint to formally support linting languages other than JavaScript. As part of that effort, we'll be consolidating all of the JavaScript-specific functionality into the
@eslint/js
plugin.Key Points
@eslint/js
package, including:@eslint/js
package will live in its own repository separate from the coreespree
,eslint-scope
, etc.) are primarily intended for use with ESLint. We don't currently accept feature requests that don't benefit ESLint directly.How to organize
@eslint/js
?The question we need your help answering is how to organize the
@eslint/js
package going forward. There are two options.Option 1: Monorepo plus separate packages
espree
,eslint-scope
, etc.)@eslint/js
package depends on the other packages in the repo.Option 2: Single package with tree-shakeable entrypoints
@eslint/js
package has separate entrypoints for the different components, such as@eslint/js/parser
, that are tree-shakeable to avoid bundling the entire package when you just want to use one or two components.23 votes ·
Beta Was this translation helpful? Give feedback.
All reactions