A ESLint plugin for webpack
The plugin was born with the purpose of solving some problems of the eslint-loader.
eslint-webpack-plugin | eslint-loader | |
---|---|---|
Easy configuration | :heavy_check_mark: | :heavy_multiplication_x: |
Generate unique an output report | :heavy_check_mark: | :heavy_multiplication_x: |
Using cache directly from eslint | :heavy_check_mark: | :heavy_multiplication_x: |
Lint only changed files | :heavy_check_mark: | :heavy_multiplication_x: |
eslint-loader
The loader eslint-loader
will be deprecated soon, please use this plugin instead.
Before:
module.exports = {
// ...
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
loader: 'eslint-loader',
options: {
// eslint options (if necessary)
},
},
],
},
// ...
};
After:
const ESLintPlugin = require('eslint-webpack-plugin');
module.exports = {
// ...
plugins: [new ESLintPlugin(options)],
// ...
};
npm install eslint-webpack-plugin --save-dev
Note: You also need to install eslint >= 7
from npm, if you haven't already:
npm install eslint --save-dev
In your webpack configuration:
const ESLintPlugin = require('eslint-webpack-plugin');
module.exports = {
// ...
plugins: [new ESLintPlugin(options)],
// ...
};
You can pass eslint options.
Note that the config option you provide will be passed to the ESLint
class. This is a different set of options than what you'd specify in package.json
or .eslintrc
. See the eslint docs for more details.
Warning: In eslint-webpack-plugin version 1 the options were passed to the now deprecated CLIEngine.
context
String
compiler.context
A string indicating the root of your files.
eslintPath
String
eslint
Path to eslint
instance that will be used for linting. If the eslintPath
is a folder like a official eslint, or specify a formatter
option. now you dont have to install eslint
.
extensions
String|Array[String]
'js'
Specify extensions that should be checked.
exclude
String|Array[String]
'node_modules'
Specify the files and/or directories to exclude. Must be relative to options.context
.
files
String|Array[String]
null
Specify directories, files, or globs. Must be relative to options.context
. Directories are traveresed recursively looking for files matching options.extensions
. File and glob patterns ignore options.extensions
.
fix
Boolean
false
Will enable ESLint autofix feature.
Be careful: this option will change source files.
formatter
String|Function
'stylish'
Accepts a function that will have one argument: an array of eslint messages (object). The function must return the output as a string. You can use official eslint formatters.
lintDirtyModulesOnly
Boolean
false
Lint only changed files, skip lint on start.
threads
Boolean | Number
false
Will run lint tasks across a thread pool. The pool size is automatic unless you specify a number.
By default the plugin will auto adjust error reporting depending on eslint errors/warnings counts. You can still force this behavior by using emitError
or emitWarning
options:
emitError
Boolean
false
Will always return errors, if set to true
.
emitWarning
Boolean
false
Will always return warnings, if set to true
.
failOnError
Boolean
false
Will cause the module build to fail if there are any errors, if set to true
.
failOnWarning
Boolean
false
Will cause the module build to fail if there are any warnings, if set to true
.
quiet
Boolean
false
Will process and report errors only and ignore warnings, if set to true
.
outputReport
Boolean|Object
false
Write the output of the errors to a file, for example a checkstyle xml file for use for reporting on Jenkins CI.
The filePath
is an absolute path or relative to the webpack config: output.path
. You can pass in a different formatter
for the output file, if none is passed in the default/configured formatter will be used.