This linter plugin for SublimeLinter provides an interface to ESLint
861
stars
229
commits
Python
primary language
Feb 27, 2025
updated
This linter plugin for SublimeLinter provides an interface to ESLint. It will be used with "JavaScript" files, but since eslint is pluggable, it can actually lint a variety of other files as well.
SublimeLinter must be installed in order to use this plugin.
Please install via Package Control.
Before using this plugin, ensure that eslint is installed on your system.
To install eslint, do the following:
npm install -g eslint
eslint locally in your project folder (you must have a package.json file there):npm install -D eslint
eslint provides fixes for some errors. These fixes are available in SublimeLinter as quick actions. See the Command Palette: SublimeLinter: Quick Action. (Also: https://github.com/SublimeLinter/SublimeLinter#quick-actionsfixers)
You may want to define a key binding:
// To trigger a quick action
{ "keys": ["ctrl+k", "ctrl+f"],
"command": "sublime_linter_quick_actions"
},
SublimeLinter will detect some installed local plugins, and thus it should work automatically for e.g. .vue or .ts files. If it works on the command line, there is a chance it works in Sublime without further ado.
eslint itself. T.i., technically, both eslint and its plugins are described in the very same package.json.eslint will probably show error messages or wrong lint results, and SublimeLinter will just pass them to you.)Out-of-the-box SublimeLinter detects typescript, vue, svelte, html, and json. Please open a PR for important other plugins. Note, however, that when you configure the executable manually, you also opt-out of the automatic plugin detection and fallback to linting "Javscript" only.
In any case, if you want to control which files SublimeLinter sends to eslint, you can always manually change the "selector" setting to just include the scopes you explicitly want. The default value for "JavaScript" is source.js - meta.attribute-with-value, make sure to include that in the configuration.
For Typescript .ts files it would be:
"linters": {
"eslint": {
"selector": "source.ts, source.js - meta.attribute-with-value"
}
}
For Vue.js .vue files it would be:
"linters": {
"eslint": {
"selector": "text.html.vue, source.js - meta.attribute-with-value"
}
}
For Svelte .svelte files, using eslint-plugin-svelte and Svelte syntax highlighting, it would be:
"linters": {
"eslint": {
"selector": "text.html.svelte, source.js - meta.attribute-with-value"
}
}
To find the selector value for a particular file type, place the cursor at the start of the file and use the command Tools ➡️ Developer ➡️ Show Scope Name.
This plugin will automatically prefer a eslint_d installation if present.
You can change this behavior by setting prefer_eslint_d to false either
globally or per project. E.g. for the global setting:
"linters": {
"eslint": {
"prefer_eslint_d": false
}
}
You can configure eslint options in the way you would from the command line, with .eslintrc files. For more information, see the eslint docs.
eslint doesn't lint my HTML files anymore.Starting with v4.2 of this plugin, eslint will only lint '*.js' files for standard, vanilla configurations without further plugins. You can restore the old behavior by setting selector to its old value:
"linters": {
"eslint": {
"selector": "source.js - meta.attribute-with-value"
}
}
eslint.You must have a package.json file if you've installed eslint locally. Also, restart the project or Sublime Text itself after to make sure SublimeLinter uses the correct eslint instance.
npm init -f
npm install eslint
If you're using SublimeLinter 4, the linter is trying to always lint the current view, even if there's no ESLint setup for the project or file. You can easily fix this error by creating an empty .eslintrc file in your home directory. This file will be picked up by the linter when there is no locally-defined ESLint configuration.
Use your editor of choice and create this config file, or do this on a terminal:
cd $HOME # or cd %HOMEPATH% on Windows
touch .eslintrc
echo '{ "rules": {} }' > .eslintrc
eslint_d and the linter suddently stopped workingIf you use eslint_d and the linter suddently stopped working with an error message like "Error: ENOENT: no such file or directory, open /../eslint/node_modules/globals/index.js", a restart of eslint_d might resolve the problem:
eslint_d restart
Python
100.0%
This linter plugin for SublimeLinter provides an interface to ESLint
861
stars
229
commits
Python
primary language
Feb 27, 2025
updated
This linter plugin for SublimeLinter provides an interface to ESLint. It will be used with "JavaScript" files, but since eslint is pluggable, it can actually lint a variety of other files as well.
SublimeLinter must be installed in order to use this plugin.
Please install via Package Control.
Before using this plugin, ensure that eslint is installed on your system.
To install eslint, do the following:
npm install -g eslint
eslint locally in your project folder (you must have a package.json file there):npm install -D eslint
eslint provides fixes for some errors. These fixes are available in SublimeLinter as quick actions. See the Command Palette: SublimeLinter: Quick Action. (Also: https://github.com/SublimeLinter/SublimeLinter#quick-actionsfixers)
You may want to define a key binding:
// To trigger a quick action
{ "keys": ["ctrl+k", "ctrl+f"],
"command": "sublime_linter_quick_actions"
},
SublimeLinter will detect some installed local plugins, and thus it should work automatically for e.g. .vue or .ts files. If it works on the command line, there is a chance it works in Sublime without further ado.
eslint itself. T.i., technically, both eslint and its plugins are described in the very same package.json.eslint will probably show error messages or wrong lint results, and SublimeLinter will just pass them to you.)Out-of-the-box SublimeLinter detects typescript, vue, svelte, html, and json. Please open a PR for important other plugins. Note, however, that when you configure the executable manually, you also opt-out of the automatic plugin detection and fallback to linting "Javscript" only.
In any case, if you want to control which files SublimeLinter sends to eslint, you can always manually change the "selector" setting to just include the scopes you explicitly want. The default value for "JavaScript" is source.js - meta.attribute-with-value, make sure to include that in the configuration.
For Typescript .ts files it would be:
"linters": {
"eslint": {
"selector": "source.ts, source.js - meta.attribute-with-value"
}
}
For Vue.js .vue files it would be:
"linters": {
"eslint": {
"selector": "text.html.vue, source.js - meta.attribute-with-value"
}
}
For Svelte .svelte files, using eslint-plugin-svelte and Svelte syntax highlighting, it would be:
"linters": {
"eslint": {
"selector": "text.html.svelte, source.js - meta.attribute-with-value"
}
}
To find the selector value for a particular file type, place the cursor at the start of the file and use the command Tools ➡️ Developer ➡️ Show Scope Name.
This plugin will automatically prefer a eslint_d installation if present.
You can change this behavior by setting prefer_eslint_d to false either
globally or per project. E.g. for the global setting:
"linters": {
"eslint": {
"prefer_eslint_d": false
}
}
You can configure eslint options in the way you would from the command line, with .eslintrc files. For more information, see the eslint docs.
eslint doesn't lint my HTML files anymore.Starting with v4.2 of this plugin, eslint will only lint '*.js' files for standard, vanilla configurations without further plugins. You can restore the old behavior by setting selector to its old value:
"linters": {
"eslint": {
"selector": "source.js - meta.attribute-with-value"
}
}
eslint.You must have a package.json file if you've installed eslint locally. Also, restart the project or Sublime Text itself after to make sure SublimeLinter uses the correct eslint instance.
npm init -f
npm install eslint
If you're using SublimeLinter 4, the linter is trying to always lint the current view, even if there's no ESLint setup for the project or file. You can easily fix this error by creating an empty .eslintrc file in your home directory. This file will be picked up by the linter when there is no locally-defined ESLint configuration.
Use your editor of choice and create this config file, or do this on a terminal:
cd $HOME # or cd %HOMEPATH% on Windows
touch .eslintrc
echo '{ "rules": {} }' > .eslintrc
eslint_d and the linter suddently stopped workingIf you use eslint_d and the linter suddently stopped working with an error message like "Error: ENOENT: no such file or directory, open /../eslint/node_modules/globals/index.js", a restart of eslint_d might resolve the problem:
eslint_d restart
Python
100.0%