Code Monkey home page Code Monkey logo

eslint-webpack-plugin's People

Contributors

alexander-akait avatar amareshsm avatar anshumanv avatar ben-lau avatar cap-bernardito avatar ersachin3112 avatar evilebottnawi avatar facugaich avatar gabriel-dias-oliveira avatar gertsallaerts avatar ilmxml avatar jsg2021 avatar lkummer avatar michaelangeliu avatar n-rodriguez avatar onigoetz avatar patrykszwed avatar privatenumber avatar ricardogobbosouza avatar snitin315 avatar vvanpo avatar wood1986 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

eslint-webpack-plugin's Issues

support vue file

  • Operating System:
  • Node Version:v10
  • NPM Version:v6
  • webpack Version:v4
  • eslint-webpack-plugin Version:v1.0.0

Feature Proposal

i replace eslint-loader with this plugin,but it only lint js file,does it support vue or react?

Feature Use Case

Exclude files

  • Operating System: macOS 10.15.5
  • Node Version: 10.15.3
  • NPM Version: 6.4.1
  • webpack Version: 4.34.0
  • eslint-webpack-plugin Version: 2.1.0

Feature Proposal

Exclude files based on glob pattern.

Feature Use Case

It was useful to be able to exclude certain files (using eslint-loader) during the build process because they aren't used for deployment purposes. Adding them to .eslintignore is not desirable because they should still be linted during development.

emitWarning option dont work

  • Operating System: Windows 10 v2004 64-bit
  • Node Version: 12.16.3
  • NPM Version: 6.14.4
  • webpack Version: 4.44.2
  • eslint-webpack-plugin Version: 2.1.0

Expected Behavior

Warning message should not be shown when emitWarning set to false.

Actual Behavior

Warning message is shown when emitWarning set to false.

Code

// webpack.config.js
const path = require('path')
const ESLintPlugin = require('eslint-webpack-plugin')

module.exports = {
  mode: "development",
  entry: 'src/index.js',
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'index.js',
  },
  plugins: [new ESLintPlugin({
    context: 'src',
    extensions: ['js'],
    emitWarning: false,
    emitError: true,
    failOnError: true,
    failOnWarning: false
  })]
}

In this case, warning is always shown.

I use [email protected] to run building.

How Do We Reproduce?

Warning message should not be shown when emitWarning set to false.

Roadmap v1.0.0:

/cc @ricardogobbosouza What is status? Do we have roadmap? I began to receive questions about what to use a plugin or loader, and frankly I do not know what to get 😄

All modules are linted in watch mode after changing only a single file

  • Operating System: macOS 11.1
  • Node Version: 15.7.0
  • NPM Version: yarn berry PnP
  • webpack Version: 4.46.0
  • eslint-webpack-plugin Version: 2.5.0

Expected Behavior

Only lint modules that were rebuilt after changing a file.

Actual Behavior

Every module is linted after changing a file.

Code

new ESLintPlugin({
  extensions: ['js', 'vue'],
})

How Do We Reproduce?

It seems there was a recent change to which hooks were used to lint the files. Before succeedModule was used which was only called with the rebuilt modules after a file change, but now finishModules is used which passes every module in the compilation, so all files get linted.

eslint-webpack-plugin is 2.5 times slower than eslint-loader

When I run webpack it takes waaay more time than eslint-loaded. Is this normal?
I just followed the "Migrate from eslint-loader" instructions from the docs

  • Operating System: mac
  • Node Version: 10.18.0
  • NPM Version: 6.13.4
  • webpack Version: 4.29.6
  • eslint-webpack-plugin Version: 2.1.0

Expected Behavior

Webpack compilation time is the same as before

Actual Behavior

Webpack compilation time is the 2.5 times higher

Code

// webpack.config.js
const ESLintPlugin = require('eslint-webpack-plugin');

module.exports = {
  // ...
  plugins: [new ESLintPlugin(options)],
  // ...
};

ERROR in No ESLint configuration found in ...

  • Operating System: Windows 10 x64
  • Node Version: v14.15.4
  • NPM Version: 6.14.10
  • webpack Version: 5.23.0
  • eslint-webpack-plugin Version: 2.5.2

Expected Behavior

I try to use eslint-webpack-plugin according to your example. I thought that eslint-webpack-plugin will use optional options that I pass into the ESLintPlugin constructor and therefore .eslintrc file is not neccessary now. I tried to use constructor without options or with an empty object but I get an error.

Actual Behavior

I get the error:

ERROR in No ESLint configuration found in C:\Sources\excel-course\src.

Am I to create the .eslintrc file? Must I to use @babel/eslint-parser with eslint-webpack-plugin? I want to lint my original JS-files instead of linting of JS-files that are the transpilling result by Babel.

Code

I published my webpack.config.js and package.json files on Gist here.

Also I published completely my 'hello world' project with this problem on GitHub here (look at webpack branch).

How Do We Reproduce?

git clone https://github.com/Andrey-Bushman/excel-course.git
cd ./excel-course/
git checkout webpack
npm i
npm start

Performance regression

By moving the finishModule hook we no longer spread the linting work out... one lump (in my case 5620 files) gets sent to the linter in one go. The thread pool (if threaded) does not fill up... only one worker gets all the jobs.

Originally posted by @jsg2021 in #73 (comment)

the scan of eslint-webpack-plugin is different from eslint-loader in webpack4

Documentation Is:

  • Missing
  • Needed
  • Confusing
  • Not Sure?

Please Explain in Detail...

How to lint the 'compiling files' in webpack4 only. The webpack4 doesn't declare 'context'. If i use eslint-webpack-plugin like demo,it scan all the code even if 'dist'.

Your Proposal for Changes

eslint-webpack-plugin scan the code which is compiling

Fails with webpack 5 beta 9

  • Operating System: Windows 10
  • Node Version: 10.16.3
  • NPM Version: 6.13.2
  • webpack Version: 5-beta.9
  • eslint-webpack-plugin Version: 0.0.1

Expected Behavior

Runs.

Actual Behavior

Doesn't run.

TypeError: Cannot read property 'get' of undefined
    at hasFileChanged (C:\Users\username\Projects\projectname\node_modules\eslint-webpack-plugin\dist\LintDirtyModulesPlugin.js:47:49)
    at LintDirtyModulesPlugin.getChangedFiles (C:\Users\username\Projects\projectname\node_modules\eslint-webpack-plugin\dist\LintDirtyModulesPlugin.js:54:11)
    at LintDirtyModulesPlugin.apply (C:\Users\username\Projects\projectname\node_modules\eslint-webpack-plugin\dist\LintDirtyModulesPlugin.js:34:31)
    at compiler.hooks.watchRun.tapAsync (C:\Users\username\Projects\projectname\node_modules\eslint-webpack-plugin\dist\index.js:39:19)
    at Hook.eval [as callAsync] (eval at create (C:\Users\username\Projects\projectname\node_modules\webpack\node_modules\tapable\lib\HookCodeFactory.js:33:10), <anonymous>:30:1)
    at compiler.cache.endIdle.err (C:\Users\username\Projects\projectname\node_modules\webpack\lib\Watching.js:65:33)
    at C:\Users\username\Projects\projectname\node_modules\webpack\lib\HookWebpackError.js:69:3
    at Hook.eval [as callAsync] (eval at create (C:\Users\username\Projects\projectname\node_modules\webpack\node_modules\tapable\lib\HookCodeFactory.js:33:10), <anonymous>:15:1)
    at Cache.endIdle (C:\Users\username\Projects\projectname\node_modules\webpack\lib\Cache.js:140:22)
    at Watching._go (C:\Users\username\Projects\projectname\node_modules\webpack\lib\Watching.js:63:23)
    at Watching._invalidate (C:\Users\username\Projects\projectname\node_modules\webpack\lib\Watching.js:238:9)
    at watcher.compiler.watchFileSystem.watch (C:\Users\username\Projects\projectname\node_modules\webpack\lib\Watching.js:202:11)
    at Watchpack.watcher.once (C:\Users\username\Projects\projectname\node_modules\webpack\lib\node\NodeWatchFileSystem.js:85:4)
    at Object.onceWrapper (events.js:286:20)
    at Watchpack.emit (events.js:198:13)
    at Watchpack.EventEmitter.emit (domain.js:448:20)

2.4.0 causes OOM errors in docker running node 12.18.2

  • Operating System: Linux Alpine
  • Node Version: 12.18.2
  • NPM Version:
  • webpack Version: 4.44.2
  • eslint-webpack-plugin Version: 2.4.0

The project uses an ejected create-react-app base.

Expected Behavior

Production build to pass.

Actual Behavior

Production build throws OOM sigkill error.

Code

new ESLintPlugin({
  // Plugin options
  extensions: ['js', 'mjs', 'jsx', 'ts', 'tsx'],
  formatter: require.resolve('react-dev-utils/eslintFormatter'),
  eslintPath: require.resolve('eslint'),
  context: paths.appSrc,
  cache: true,
  // ESLint class options
  cwd: paths.appPath,
  resolvePluginsRelativeTo: __dirname,
  baseConfig: {
    extends: [require.resolve('eslint-config-react-app/base')],
    rules: {
      ...(!hasJsxRuntime && {
        'react/react-in-jsx-scope': 'error',
      }),
    },
  },
}),

Module lint errors are reported when module is not included in webpack bundle

  • Operating System: N/R
  • Node Version: N/R
  • NPM Version: N/R
  • webpack Version: N/R
  • eslint-webpack-plugin Version: 2.4.3 (the same issue occurs on branch pref-use-finish-modules)

Let's assume scenario:
webpack entry point: index.js

  • index.js
  • lintError.js
  1. index.js:
import "lintError.js";

webpack is erroring with lintError.js's linting error

  1. let's change index.js (lintErrorjs.js is no longer imported in the bundle):
// import "lintErrorjs";

again webpack is erroring with lintError.js's linting error

Expected Behavior / Situation

after index.js is changed (2) webpack shouldn't throw error

Actual Behavior / Situation

webpack is throwing an error

Modification Proposal

the issue is this line:

results = Object.values(crossRunResultStorage);

I propose getting rid of cache in src/linter.js, as we are not using it as cache at all,
maybe create a real caching mechanism

Threads massively slows down linting / re-linting

  • Operating System: Windows 10
  • Node Version: v14.15.1
  • YARN Version: 1.22.4
  • webpack Version: 4.44.2
  • eslint-webpack-plugin Version: 2.4.0

This is a problem that was experienced in react-scripts / create-react-app v4.0.1 and v4.0.2

Compiling and Re-compiling changes seems extremely slow compared to pre v4 version. After digging a bit, it seems the culprit is threads: true pointed out by @radoi90 here - #50 (comment)

Expected Behavior

Fast compiling

Actual Behavior

Actual very slow compiling / recompiling.

I dug a bit deeper to see if there's a small issue with the threads and it might be 2 issues, don't know if it's actually the same.

On the first compile:

  • Linting a particular file seems fast but it takes a while to move to a new file - anywhere between 20ms to a few seconds.

I've added before this line:

  console.timeEnd('start lint next');
  console.time('linted in');

  // Queue file for linting.
  lint(file);

  console.timeEnd('linted in');
  console.time('start lint next');

and my results look like this:

start lint next: 19.038ms
files to lint: E:\project\src\components\layout\aFile.tsx
linted in: 0.702ms

start lint next: 133.277ms
files to lint: E:\project\src\components\settings\bFile.tsx
linted in: 1.106ms

start lint next: 577.165ms
files to lint: E:\project\src\stores\cFile.ts
linted in: 1.451ms

start lint next: 98.303ms
files to lint: E:\project\src\stores\dFile.ts
linted in: 1.143ms

start lint next: 148.661ms
files to lint: E:\project\src\stores\eFile.ts
linted in: 0.999ms

start lint next: 901.431ms
files to lint: E:\project\src\stores\fFile.ts
linted in: 1.096ms

start lint next: 13.968ms
files to lint: E:\project\src\functions\gFile.ts
linted in: 0.657ms

start lint next: 86.591ms
files to lint: E:\project\src\stores\thumb-gen\hFile.ts
linted in: 1.701ms

(this is a small excerpt of 300+ files that need to be linted at first run)

I've also measured:

const { errors, warnings, generateReportAsset } = await report();

which took awaitReport: 29.909ms

and

await generateReportAsset(compilation);

generateReportAsset: 0.177ms

then I've edited just a single file to see what happens there and it looks something like this:

files to lint: E:\project\src\components\layout\Header.tsx
linted in: 3.163ms
awaitReport: 16.754s // 16 seconds!!


files to lint: E:\project\src\components\layout\Header.tsx
linted in: 1.515ms
awaitReport: 11.264s // 11 seconds!!

Code

https://github.com/facebook/create-react-app/blob/9b08e3c9b365ac790546a3d5027d24f264b42613/packages/react-scripts/config/webpack.config.js#L753-L771

setting threads: false as here facebook/create-react-app#10154 (comment)
solves the slow lint / relint

// additional code, HEY YO remove this block if you don't need it

How Do We Reproduce?

I guess try it on a newly created React project with create-react-app - facebook/create-react-app#10145 (comment)

TypeError: Cannot read property 'split' of undefined

  • Operating System: Mac os
  • Node Version: v12.14.1
  • Yarn Version: 1.22.5
  • webpack Version:
  • eslint-webpack-plugin Version:
    Not too sure what webpack version I'm using as it's bootstrapped using vue-cli tools.
  "dependencies": {
    "@fullstory/browser": "^1.4.6",
    "@funnel-io/nav-plugin-api": "^1.9.0",
    "core-js": "^3.6.5",
    "git-describe": "^4.0.4",
    "vue": "3.0.5"
  },
  "devDependencies": {
    "@sentry/webpack-plugin": "^1.14.0",
    "@typescript-eslint/eslint-plugin": "^4.9.1",
    "@typescript-eslint/parser": "^4.9.1",
    "@vue/cli-plugin-babel": "^5.0.0-alpha.2",
    "@vue/cli-plugin-eslint": "^5.0.0-alpha.2",
    "@vue/cli-plugin-typescript": "^5.0.0-alpha.2",
    "@vue/cli-service": "^5.0.0-alpha.2",
    "@vue/compiler-sfc": "^3.0.0-beta.1",
    "@vue/eslint-config-typescript": "^7.0.0",
    "eslint": "^7.15.0",
    "eslint-plugin-vue": "7.3.0",
    "typescript": "^4.1.3"
  }

Stacktrace

lilja in ~/c/u/customs-data-form on typescript λ make serve
yarn run serve
yarn run v1.22.5
warning ../../package.json: No license field
$ vue-cli-service serve
 INFO  Starting development server...
10% building 0/6 entries 2/6 dependencies 0/1 modules/Users/lilja/code/umbrella/customs-data-form/node_modules/eslint-webpack-plugin/dist/index.js:93
        const file = module.resource.split('?')[0];
                                     ^

TypeError: Cannot read property 'split' of undefined
    at processModule (/Users/lilja/code/umbrella/customs-data-form/node_modules/eslint-webpack-plugin/dist/index.js:93:38)
    at Hook.eval [as call] (eval at create (/Users/lilja/code/umbrella/customs-data-form/node_modules/webpack/node_modules/tapable/lib/HookCodeFactory.js:19:10), <anonymous>:7:1)
    at /Users/lilja/code/umbrella/customs-data-form/node_modules/webpack/lib/Compilation.js:1262:33
    at /Users/lilja/code/umbrella/customs-data-form/node_modules/webpack/lib/HookWebpackError.js:69:3
    at Hook.eval [as callAsync] (eval at create (/Users/lilja/code/umbrella/customs-data-form/node_modules/webpack/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:15:1)
    at Cache.store (/Users/lilja/code/umbrella/customs-data-form/node_modules/webpack/lib/Cache.js:107:20)
    at CacheFacade.store (/Users/lilja/code/umbrella/customs-data-form/node_modules/webpack/lib/CacheFacade.js:282:15)
    at /Users/lilja/code/umbrella/customs-data-form/node_modules/webpack/lib/Compilation.js:1254:26
    at /Users/lilja/code/umbrella/customs-data-form/node_modules/webpack/lib/ContextModule.js:439:6
    at jobDone (/Users/lilja/code/umbrella/customs-data-form/node_modules/webpack/lib/FileSystemInfo.js:1676:5)
    at FileSystemInfo.createSnapshot (/Users/lilja/code/umbrella/customs-data-form/node_modules/webpack/lib/FileSystemInfo.js:1954:3)
    at /Users/lilja/code/umbrella/customs-data-form/node_modules/webpack/lib/ContextModule.js:430:31
    at /Users/lilja/code/umbrella/customs-data-form/node_modules/webpack/lib/ContextModuleFactory.js:376:7
    at done (/Users/lilja/code/umbrella/customs-data-form/node_modules/neo-async/async.js:2931:13)
    at /Users/lilja/code/umbrella/customs-data-form/node_modules/webpack/lib/ContextModuleFactory.js:354:12
    at Hook.eval [as callAsync] (eval at create (/Users/lilja/code/umbrella/customs-data-form/node_modules/webpack/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:18:1)
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
make: *** [serve] Error 1

Code

vue.config.js
const SentryWebpackPlugin = require("@sentry/webpack-plugin");
const {gitDescribeSync} = require('git-describe');
const urls = {
    "development": "http://localhost:8000",
    "stage": "....",
    "production": "....",
};
const funnelBaseURLPrefix = {
    "development": "http://local.",
    "stage": "https://master.stage.",
    "production": "https://",
};
const gitSha = gitDescribeSync(__dirname, {
    longSemver: true,
    dirtySemver: true
})
const built = new Date().toISOString().replace('T', ' ')

process.env.VUE_APP_GIT_HASH = `SHA: ${gitSha.hash}, dirty: ${gitSha.dirty}, built: ${built}`

process.env.VUE_APP_CONNECTOR_WEB_API_URL = urls[process.env.NODE_ENV]
process.env.VUE_APP_BASE_URL = `${funnelBaseURLPrefix[process.env.NODE_ENV]}funnel.io`

let plugins = []
let publicPath = '/';

if (process.env.NODE_ENV === 'production' || process.env.NODE_ENV === 'stage') {
    publicPath = '/data-request-form/'
}
if (process.env.NODE_ENV === 'production') {
    process.env.VUE_APP_FULLSTORY_ORG = process.env.FULLSTORY_ORG
    plugins = []
}


module.exports = {
    chainWebpack: config => {
        config
            .plugin('html')
            .tap(args => {
                args[0].title = "Data Request Form";
                return args;
            })
        config.output
          .filename(`js/[name].[hash:8].js`)
          .chunkFilename(`js/[name].[hash:8].js`)
    },
    configureWebpack: {
        devServer: {
          headers: { "Access-Control-Allow-Origin": "*" }
        },
        plugins
    },
    devServer: {
      disableHostCheck: true,
    },
    publicPath: publicPath
}

How Do We Reproduce?

Don't know.

Errors and warnings are not being passed into console.warn and console.error as a string

  • Operating System: Ubuntu 20.04
  • Node Version: v14.15
  • webpack Version: 5.24.2
  • eslint-webpack-plugin Version: 2.5.2

Expected Behavior

Should emit errors and warnings in the console

Actual Behavior

Warnings are emitted as an object in the console

screenshot

Code

{
  module: {
    rules: [
      {
        test: /\.js$/,
        use: [
          {
            loader: 'babel-loader'
          }
        ]
      }
    ]
  },
  plugins: [new ESLintPlugin()]
}

Plugin fails webpack build for node_modules with missing eslint config

Since v2.2.0 the plugin fails webpack build if any package inside node_modules references eslintConfig in its package.json but the config itself is actually missing as it is not part of the published npm package.

This happens for example with popper.js or tippy.js packages. If v2.1.0 of this plugin is used, there is no issue.

  • Operating System: Mac OSX 10.15.7
  • Node Version: 12.19.0
  • NPM Version: 6.14.8
  • webpack Version: 4.44.2
  • eslint-webpack-plugin Version: 2.2.0

Expected Behavior

The plugin should ignore missing eslint configs of packages inside node_modules.

Actual Behavior

Webpack build fails because of missing eslint config inside node_modules package that references it.

Code

Inside webpack.config.js (simplified for purpose of this issue)

const dev = process.env.NODE_ENV !== 'production';
plugins: [
  new ESLintWebpackPlugin({
    emitError: !dev,
    emitWarning: dev,
  }),
]

Error stack trace

 UnhandledPromiseRejectionWarning: Error: Failed to load config "./.config/eslint.config" to extend from.
Referenced from: /Users/vitrozsival/projects/sites/point/node_modules/@popperjs/core/package.json
    at configMissingError (/Users/vitrozsival/projects/sites/point/node_modules/@eslint/eslintrc/lib/config-array-factory.js:289:9)
    at ConfigArrayFactory._loadExtendedShareableConfig (/Users/vitrozsival/projects/sites/point/node_modules/@eslint/eslintrc/lib/config-array-factory.js:877:23)
    at ConfigArrayFactory._loadExtends (/Users/vitrozsival/projects/sites/point/node_modules/@eslint/eslintrc/lib/config-array-factory.js:780:25)
    at ConfigArrayFactory._normalizeObjectConfigDataBody (/Users/vitrozsival/projects/sites/point/node_modules/@eslint/eslintrc/lib/config-array-factory.js:719:25)
    at _normalizeObjectConfigDataBody.next (<anonymous>)
    at ConfigArrayFactory._normalizeObjectConfigData (/Users/vitrozsival/projects/sites/point/node_modules/@eslint/eslintrc/lib/config-array-factory.js:664:20)
    at _normalizeObjectConfigData.next (<anonymous>)
    at ConfigArrayFactory.loadInDirectory (/Users/vitrozsival/projects/sites/point/node_modules/@eslint/eslintrc/lib/config-array-factory.js:510:28)
    at CascadingConfigArrayFactory._loadConfigInAncestors (/Users/vitrozsival/projects/sites/point/node_modules/@eslint/eslintrc/lib/cascading-config-array-factory.js:378:46)
    at CascadingConfigArrayFactory._loadConfigInAncestors (/Users/vitrozsival/projects/sites/point/node_modules/@eslint/eslintrc/lib/cascading-config-array-factory.js:397:20)
    at CascadingConfigArrayFactory._loadConfigInAncestors (/Users/vitrozsival/projects/sites/point/node_modules/@eslint/eslintrc/lib/cascading-config-array-factory.js:397:20)
    at CascadingConfigArrayFactory.getConfigArrayForFile (/Users/vitrozsival/projects/sites/point/node_modules/@eslint/eslintrc/lib/cascading-config-array-factory.js:299:18)
    at FileEnumerator._iterateFilesWithFile (/Users/vitrozsival/projects/sites/point/node_modules/eslint/lib/cli-engine/file-enumerator.js:365:43)
    at FileEnumerator._iterateFiles (/Users/vitrozsival/projects/sites/point/node_modules/eslint/lib/cli-engine/file-enumerator.js:346:25)
    at FileEnumerator.iterateFiles (/Users/vitrozsival/projects/sites/point/node_modules/eslint/lib/cli-engine/file-enumerator.js:296:59)
    at iterateFiles.next (<anonymous>)
    at CLIEngine.executeOnFiles (/Users/vitrozsival/projects/sites/point/node_modules/eslint/lib/cli-engine/cli-engine.js:770:48)
    at ESLint.lintFiles (/Users/vitrozsival/projects/sites/point/node_modules/eslint/lib/eslint/eslint.js:521:23)
    at lint (/Users/vitrozsival/projects/sites/point/node_modules/eslint-webpack-plugin/dist/linter.js:72:28)
    at processModule (/Users/vitrozsival/projects/sites/point/node_modules/eslint-webpack-plugin/dist/index.js:93:9)
    at SyncHook.eval (eval at create (/Users/vitrozsival/projects/sites/point/node_modules/tapable/lib/HookCodeFactory.js:19:10), <anonymous>:5:1)
    at /Users/vitrozsival/projects/sites/point/node_modules/webpack/lib/Compilation.js:781:30
    at handleParseResult (/Users/vitrozsival/projects/sites/point/node_modules/webpack/lib/NormalModule.js:478:12)
    at /Users/vitrozsival/projects/sites/point/node_modules/webpack/lib/NormalModule.js:500:6
    at /Users/vitrozsival/projects/sites/point/node_modules/webpack/lib/NormalModule.js:358:12
    at /Users/vitrozsival/projects/sites/point/node_modules/loader-runner/lib/LoaderRunner.js:373:3
    at iterateNormalLoaders (/Users/vitrozsival/projects/sites/point/node_modules/loader-runner/lib/LoaderRunner.js:214:10)
    at Array.<anonymous> (/Users/vitrozsival/projects/sites/point/node_modules/loader-runner/lib/LoaderRunner.js:205:4)
    at Storage.finished (/Users/vitrozsival/projects/sites/point/node_modules/enhanced-resolve/lib/CachedInputFileSystem.js:55:16)
    at /Users/vitrozsival/projects/sites/point/node_modules/enhanced-resolve/lib/CachedInputFileSystem.js:91:9
    at /Users/vitrozsival/projects/sites/point/node_modules/graceful-fs/graceful-fs.js:123:16
    at FSReqCallback.readFileAfterClose [as oncomplete] (internal/fs/read_file_context.js:63:3)

How Do We Reproduce?

TS Typing error: "This expression is not constructable." when esModuleInterop is false

Bug Report

Hello, I am opening this issue as an follow-up to #16, which I believe still has issues with the TypeScript typing.
As I mentioned on my comment, it is not possible to correctly import this package with its current type exports if I use the esModuleInterop set as false.

  • Operating System:
  • Node Version: v14.15.1
  • NPM Version: 7.0.14
  • webpack Version: 5.11.0
  • eslint-webpack-plugin Version: 2.4.0
  • eslint version: 7.7.0
  • Typescript version: 4.0.1

Expected Behavior

Importing "eslint-webpack-plugin" should correctly return the ESLintWebpackPlugin class and I should be able to instantiate it with the following code;

import ESLintWebpackPlugin = require("eslint-webpack-plugin");
import * as ESLintWebpackPlugin from "eslint-webpack-plugin"; // Alternative import.
import ESLintWebpackPlugin from "eslint-webpack-plugin" // when using esModuleInterop: true
...
new ESLintWebpackPlugin({
    // Options.
});

Actual Behavior

Importing the default exports causes either a TS or a JS error when esModuleInterop is disabled, as I better explain on my comment here.

Code and Reproduction:

https://gist.github.com/fcaminada/7d2cc25c74c3b7bdfe43246190c5d57d

The solution would be to follow the same example as other plugins such as CssMinimizerPlugin, for instance.

Remove defaults for extensions

Expected Behavior

Creating new ESLintPlugin() without options should behave the same as running eslint on the command line without options.

Actual Behavior

The default value for extensions here https://github.com/webpack-contrib/eslint-webpack-plugin/blob/master/src/options.js#L46 breaks the parity between eslint-webpack-plugin and eslint.

Yes, eslint also defaults to just js, but if I'm using another parser (e.g. @typescript-eslint/parser) that knows to use a different file type as the default instead (e.g. ts/tsx), I'd like to rely on that instead of having to specify it myself. That does not work when eslint-webpack-plugin imposes 'js' as extension when I don't specify it.

Webpack 5: lintDirtyModulesOnly fails because getDirtyFiles returns lots of non-existent files

  • Operating System: Mac
  • Node Version: 10.19.0
  • NPM Version: 6.13.4
  • webpack Version: 5.2.0
  • eslint-webpack-plugin Version: 2.1.0

Expected Behavior / Situation

When using lintDirtyModulesOnly w/Webpack 5, only real, dirty files should be linted.

Actual Behavior / Situation

For reference sake, here's my configuration:

new ESLintWebpackPlugin({
  files: ['src/client', 'src/shared'],
  extensions: ['js', 'jsx'],
  cache: true,
  lintDirtyModulesOnly: true,
}),

Upon modifying a watched file, I get an error like this: ERROR in No files matching '/Users/me/my-project/src/client/Component.js' were found

Via a debugger, I found that for some reason runCompiler.fileTimestamps contains lots and lots of non-existent files. I think that's a webpack issue, perhaps due to my usage of both .js and .jsx file extensions in my project (or who knows why), but it bleeds into eslint-webpack-plugin by causing _DirtyFileWatcher.getDirtyFiles to return pretty much all of the non-existent file paths that fall under my context (not just dirty, real ones).

To be clear, these non-existent files usually look something like this in the fileTimestamps map: {'my-project-path/some-actual-js-file.jsx' => null} (where the real actual-js-file.jsx actually has a .js file extension).

On one hand, this bit of logic in the DirtyFileWatcher is a real head-scratcher:

const hasFileChanged = (filename, fileSystemInfoEntry) => {
  const prevTimestamp = getTimestamps(this.prevTimestamps.get(filename));
  const timestamp = getTimestamps(fileSystemInfoEntry);

  // this comparison logic will always return any file that has a null timestamp, 
  // even though a null timestamp seems to mean the file doesn't exist!
  return (prevTimestamp || this.startTime) < (timestamp || Infinity);
};

When I changed that code locally to the following, it just worked:

const hasFileChanged = (filename, fileSystemInfoEntry) => {
  const prevTimestamp = getTimestamps(this.prevTimestamps.get(filename));
  const timestamp = getTimestamps(fileSystemInfoEntry);
  if (!timestamp) {
    return false;
  }
  return (prevTimestamp || this.startTime) < (timestamp);
};

Using Webpack5's newly added runCompiler.modifiedFiles property makes this problem much easier to solve. I simply wrapped the existing plugin with the following, so I could substitute my own dirty modules logic (this way I have a temporary workaround that doesn't involve me forking this project):

const ESLintWebpackPlugin = require('eslint-webpack-plugin');
const linter = require('eslint-webpack-plugin/dist/linter').default;

module.exports = class Webpack5ESLintWebpackPlugin extends ESLintWebpackPlugin {
  constructor(options = {}) {
    super(options);
  }

  apply(compiler) {
    const {lintDirtyModulesOnly, ...options} = this.options;
    if (!lintDirtyModulesOnly) {
      super.apply(compiler);
      return;
    }

    compiler.hooks.watchRun.tapPromise(
      'ESLintWebpackPlugin',
      async (runCompiler) => {
        const {modifiedFiles} = runCompiler;
        if (modifiedFiles && modifiedFiles.size > 0) {
          await linter(
            {
              ...options,
              files: Array.from(modifiedFiles.values()),
            },
            runCompiler
          );
        }
      }
    );
  }
};

Modification Proposal

Basically any of the above hacks should resolve the issue (at least naively), but I figured I'd share what I did to help illustrate the problem. Obviously my modifiedFiles hack doesn't address filtering by files or extensions, but it's helpful to demonstrate the issue (I'll definitely need to deal with extensions before using it in anger).

I'd recommend checking for the existence of the modifiedFiles property, and if it exists, skip the dirtyFileWatcher entirely.
If it doesn't exist, that implies one of the following:

  • either we're using an earlier version of webpack (can confirm via runCompiler.webpack.version), or
  • It's the first run (no files have been modified yet).

Development server not reloading on changes to code - "[WDS] Errors while compiling. Reload prevented."

Bug report

If the current behavior is a bug, please provide the steps to reproduce.

Live reloading is prevented in development server with the error:
"[WDS] Errors while compiling. Reload prevented."

I'm using this config:

module.exports = { env: { browser: true, es2021: true, node: true, }, extends: [ 'airbnb-base', ], parserOptions: { ecmaVersion: 12, sourceType: 'module', }, rules: { }, };

Then do npm start

What is the expected behavior?

Live reloading should work in web development server. When I make a change to the code, it should be reflected in the web dev server. I tried using these options:

new ESLintPlugin({ failOnError: false, failOnWarning: false })

It seems like they had no effect (according to the docs, false is the default anyway).

Other relevant information:
webpack version: 5.16.0
Node.js version: 10.16.3
Operating System: Windows 10
Additional tools:

Non-blocking linting option

  • Operating System: N/R
  • Node Version: N/R
  • NPM Version: N/R
  • webpack Version: 4/5
  • eslint-webpack-plugin Version: Latest

Feature Proposal

I suggest to add a boolean option nonBlocking (default false).
If turned on, after each code change (while "watching") the linting process will be forked to not interfere with the build process.
(Maybe can tap on the last part of the build process, but still be on another thread)
linting warnings/errors will be shown on console. Not sure it can be shown on the browser console because webpack might not know something happened (maybe someone here knows better).

Feature Use Case

Probably a development only feature:

  • The code compilation isn't really affected by lint errors/warnings (usually we use `failOnWarning: false, failOnError: false) . (If there are syntax errors, those will be caught by the transpiler anyway).
  • During development, we usually use emitWarning: true so we don't expect the build to fail anyway.
  • To boost performance of incremental code changes deferring the linting process will release the hot module replacement (or fast refresh) to see the changes in the browser while still showing lint warnings/errors in the dev server console.

WDYT?

Support typescript

Add type definition file index.d.ts or create repository @types/eslint-webpack-plugin, thank you.

eslint-webpack-plugin emits no errors/warnings when using with babel-loader

  • Operating System: Win10
  • Node Version: 12.17.0
  • NPM Version: 6.14.8
  • webpack Version: 4.43.0
  • eslint-webpack-plugin Version: 2.4.1
  • babel-loader Version: 8.1.0
  • eslint-loader Version 4.0.2

Actual Behavior

It's ok when using eslint-loader and babel-loader in webpack4 and we controlled their operation orders in config by using enforce: "pre" for eslint-loader. But after migrating from eslint-loader to eslint-webpack-plugin, eslint errors and warnings can't emitted any more. Suppose the problem is that we can't lint on the original source files by using eslint-webpack-plugin instead of eslint-loader.

Code

// webpack.config.js with eslint-loader
...
module.exports = env => {
    ...
    return {
        module: {
            rules: [
                {
                    test: /\.ts(x?)$/,
                    enforce: "pre",
                    include: [appPath],
                    exclude: /node_modules/,
                    loader: "eslint-loader",
                    options: {
                        fix: false,
                        emitErrors: true,
                        failOnError: true,
                    }
                },
                {
                    test: /\.ts(x?)$/,
                    include: [appPath],
                    use: [
                        {
                            loader: "babel-loader",
                            options: {
                                babelrc: false,
                                plugins: ["react-hot-loader/babel"],
                            }
                        },
                        {
                            loader: "awesome-typescript-loader",
                            options: {
                                configFileName: path.join(appPath, "tsconfig.json"),
                                silent: true,
                                useCache: true
                            }
                        }
                    ]
                }
            ]
        },
        ...
    }
}
// webpack.config.js with eslint-webpack-plugin
const ESLintPlugin = require('eslint-webpack-plugin');
...
module.exports = env => {
    ...
    return {
        module: {
            rules: [
                {
                    test: /\.ts(x?)$/,
                    include: [appPath],
                    use: [
                        {
                            loader: "babel-loader",
                            options: {
                                babelrc: false,
                                plugins: ["react-hot-loader/babel"],
                            }
                        },
                        {
                            loader: "awesome-typescript-loader",
                            options: {
                                configFileName: path.join(appPath, "tsconfig.json"),
                                silent: true,
                                useCache: true
                            }
                        }
                    ]
                }
            ]
        },
        plugins: [
            new ESLintPlugin({
                extensions: ["ts", "tsx"],
                fix: false,
                emitError: true,
                emitWarning: true,
                failOnError: true
            }),
            ...
        ]
    }
}

How Do We Reproduce?

Maybe just use eslint-webpack-plugin and babel-loader together in one project.

The same file is being linted multiple times during a compilation, causing very long build times

  • Operating System: macOS 11.1
  • Node Version: 15.6.0
  • NPM Version: yarn berry using PnP
  • webpack Version: 4.46.0
  • eslint-webpack-plugin Version: 2.4.3

Expected Behavior

Each module file should be linted only once.

Actual Behavior

The same module file is being linted multiple times unnecessarily which drastically increases the build time.

Code

// webpack.config.js
new ESLintPlugin({
  threads: true,
  extensions: ['js', 'vue'],
})

How Do We Reproduce?

The same module file will be linted each time it is required with a different resource query string. This code strips off the query string:

const processModule = (module) => {
if (module.resource) {
const file = module.resource.split('?')[0];
if (
file &&
micromatch.isMatch(file, wanted) &&
!micromatch.isMatch(file, exclude)
) {
// Queue file for linting.
lint(file);
}
}
};

In my case I'm using vue-loader which loads .vue files. It does some trickery behind the scenes such that when you require a .vue module it will translate that to multiple requires to load all the different parts of the file:

// This...
import Comp from './comp.vue';

// ...is converted into something like this
import Comp from './comp.vue?type=js';
import './comp.vue?type=css';

eslint-webpack-plugin lints the comp.vue file twice in this case. I did some logging and some of my modules are being linted 5 times, maybe more.

I did a quick test with this modification:

const seen = new Set();

 const processModule = (module) => {
   if (module.resource) {
     const file = module.resource.split('?')[0];
  
     if (
       file &&
       !seen.has(file) &&
       micromatch.isMatch(file, wanted) &&
       !micromatch.isMatch(file, exclude)
     ) { 
       // Queue file for linting.
       seen.add(file);
       lint(file);
     }
  }
};

and my initial build time reduced from 300s (!) down to 100s.

If I run yarn eslint . in my project directory it takes 44s but it seems eslint-webpack-plugin takes much longer to do essentially the same thing.

I tried setting the cache option to true (if such an option exists), thinking it would skip linting files that have already been linted so far in the compilation, but that made no difference.

Enabling fix doesn't seem to update source files

  • Operating System: Manjaro Linux
  • Node Version: v13.9.0
  • NPM Version: 6.13.7
  • webpack Version: 5.4.0
  • eslint-webpack-plugin Version: 2.3.0

Expected Behavior

Running webpack with the fix option enabled should update the source code and autofix the rules that it can.

Actual Behavior

If running without the fix option, it shows the error. If running with the fix option enabled, no errors are shown but source code is not updated.

Code

// webpack.config.js
...
   plugins: [
        new CleanWebpackPlugin({ verbose: true }),
        new VueLoaderPlugin(),
        new ESLintWebpackPlugin({ extensions: ['.ts', '.vue'], fix: true }),
        new PrettierPlugin({ extensions: ['.js', '.ts', '.vue'] }),
    ],
    module: {
        rules: [
            { test: /\.vue$/, loader: 'vue-loader' },
            {
                test: /\.ts$/,
                exclude: /node_modules/,
                loader: 'ts-loader',
                options: { appendTsSuffixTo: [/\.vue$/] },
            },
            { test: /\.js$/, loader: "source-map-loader" }
        ]
    }
...
// .eslintrc
{
  "root": true,
  "parser": "vue-eslint-parser",
  "parserOptions": {
    "parser": "@typescript-eslint/parser",
    "sourceType": "module"
  },
  "plugins": ["simple-import-sort"],
  "rules": {
    "simple-import-sort/sort": "error"
  }
}

How Do We Reproduce?

With configs above, running npx webpack in theory should fix the following file by re-ordering the imports:

import MyInternalClass from './my-internal-class';
import BindAll from 'lodash-decorators/bindAll';
import shuffle from 'lodash/shuffle';

lintDirtyModulesOnly doesnt seem to be working

  • Operating System: Windows 10 Pro 64 1909
  • Node Version: v10.16.3
  • NPM Version: 6.12.1
  • webpack Version: 5.0.0-beta.4
  • eslint-webpack-plugin Version: 0.0.1

Expected Behavior

lintDirtyModulesOnly: true prints linting messages for dirty/changed files only when in watch mode.

Actual Behavior

Using lintDirtyModulesOnly: false prints linting messages for all files as expected but lintDirtyModulesOnly: true doesn't print anything at all.

Code

const lint = new EslintWebpackPlugin({
    extensions: ['.ts', '.tsx'],
    lintDirtyModulesOnly: true,
});

Not sure what else I can provide, project is not public so I can't post a link or something. Just let me know if I can have a look at anything specific. Thanks!

overrideConfigFile isn't take the eslintrc config

Hello!
When I config the overrideConfigFile options it's seems like doesn't take the config from eslintrc file,
if I execute webpack, the plugin doesn't show the lint errors, but if I execute the eslint with the eslintrc config the scan show the errors correctly.

This is my webpack config:

const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const ESLintPlugin = require('eslint-webpack-plugin');

module.exports = {
  plugins: [
    new HtmlWebpackPlugin({
      template: path.resolve(__dirname, 'src/index.html'),
      hash: true,
    }),
    new MiniCssExtractPlugin(),
    new ESLintPlugin({
      overrideConfigFile: path.resolve(__dirname, '.eslintrc.client.js'),
      context: path.resolve(__dirname, '/src'),
      files: path.resolve(__dirname, '**/*.jsx'),
      extensions: ['js', 'jsx'],
    }),
  ],
  resolve: {
    extensions: ['.js', '.jsx', '.json'],
  },
  devServer: {
    port: 3000,
    open: true,
    hot: true,
    historyApiFallback: true,
  },
};

These are my dependencies:

"devDependencies": {
    "@babel/core": "^7.12.10",
    "@babel/preset-env": "^7.12.10",
    "@babel/preset-react": "^7.12.10",
    "babel-loader": "^8.2.2",
    "css-loader": "^5.0.1",
    "eslint": "^7.2.0",
    "eslint-config-airbnb": "^18.2.1",
    "eslint-config-airbnb-base": "^14.2.1",
    "eslint-plugin-import": "^2.22.1",
    "eslint-plugin-jsx-a11y": "^6.4.1",
    "eslint-plugin-react": "^7.21.5",
    "eslint-plugin-react-hooks": "^4.0.0",
    "eslint-webpack-plugin": "^2.4.1",
    "file-loader": "^6.2.0",
    "html-webpack-plugin": "^4.5.0",
    "mini-css-extract-plugin": "^1.3.3",
    "webpack": "^5.10.1",
    "webpack-cli": "^4.2.0",
    "webpack-dev-server": "^3.11.0"
  },

eslint command:
eslint ./src/**/*.jsx --config ./.eslintrc.client.js

ESLintPlugin has no construct signatures

  • Operating System: Arch Linux
  • Node Version: 14.10.1
  • Yarn Version: 1.22.5
  • webpack Version: 5.0.0-beta.29
  • eslint-webpack-plugin Version: 2.1.0
  • Typescript Version: 4.0.2

Expected Behavior

new ESLintPlugin({}) produce no errors.

Actual Behavior

This expression is not constructable.
  Type 'typeof import("/path/to/node_modules/eslint-webpack-plugin/declarations/index")' has no construct signatures. ts(2351)

Code

const ESLintPlugin = require('eslint-webpack-plugin')

module.exports = {
	plugins: [new ESLintPlugin({})], // <- error on "ESLintPlugin"
}
// tsconfig.json
{
	"compilerOptions": {
		"allowJs": true,
		"checkJs": true
	},
	"exclude": ["node_modules", "dist"]
}

lintDirtyModulesOnly:true does NOT skip lint on start (webpack --watch or webpack serve)

  • Operating System: Linux
  • Node Version: 10.23.0
  • NPM Version: 6.14.8
  • webpack Version: 4.44.2
  • eslint-webpack-plugin Version: 2.4.1

Expected Behavior

With lintDirtyModulesOnly: true and running webpack --watch or webpack serve, I expect lint to be skipped at the start. And only happen after I edit a file and webpack re-compiles.

Actual Behavior

Lint warnings and errors are reported at start-up.

$ npm run webpack:serve

> [email protected] webpack:serve /home/atte/eslint-webpack-plugin-test
> cross-env NODE_ENV=development webpack serve

ℹ 「wds」: Project is running at http://localhost:8080/
ℹ 「wds」: webpack output is served from /
ℹ 「wds」: Content not from webpack is served from /home/atte/eslint-webpack-plugin-test
⚠ 「wdm」: Hash: a74bdf32336d9eca0380
Version: webpack 4.44.2
Time: 835ms
Built at: 01/05/2021 5:11:53 PM
  Asset     Size  Chunks             Chunk Names
main.js  369 KiB    main  [emitted]  main
Entrypoint main = main.js
[0] multi (webpack)-dev-server/client?http://localhost:8080 ./src 40 bytes {main} [built]
[./node_modules/ansi-html/index.js] 4.16 KiB {main} [built]
[./node_modules/html-entities/lib/index.js] 449 bytes {main} [built]
[./node_modules/loglevel/lib/loglevel.js] 8.65 KiB {main} [built]
[./node_modules/url/url.js] 22.8 KiB {main} [built]
[./node_modules/webpack-dev-server/client/index.js?http://localhost:8080] (webpack)-dev-server/client?http://localhost:8080 4.29 KiB {main} [built]
[./node_modules/webpack-dev-server/client/overlay.js] (webpack)-dev-server/client/overlay.js 3.51 KiB {main} [built]
[./node_modules/webpack-dev-server/client/socket.js] (webpack)-dev-server/client/socket.js 1.53 KiB {main} [built]
[./node_modules/webpack-dev-server/client/utils/createSocketUrl.js] (webpack)-dev-server/client/utils/createSocketUrl.js 2.91 KiB {main} [built]
[./node_modules/webpack-dev-server/client/utils/log.js] (webpack)-dev-server/client/utils/log.js 964 bytes {main} [built]
[./node_modules/webpack-dev-server/client/utils/reloadApp.js] (webpack)-dev-server/client/utils/reloadApp.js 1.59 KiB {main} [built]
[./node_modules/webpack-dev-server/client/utils/sendMessage.js] (webpack)-dev-server/client/utils/sendMessage.js 402 bytes {main} [built]
[./node_modules/webpack-dev-server/node_modules/strip-ansi/index.js] (webpack)-dev-server/node_modules/strip-ansi/index.js 161 bytes {main} [built]
[./node_modules/webpack/hot sync ^\.\/log$] (webpack)/hot sync nonrecursive ^\.\/log$ 170 bytes {main} [built]
[./src/index.js] 30 bytes {main} [built]
    + 19 hidden modules

WARNING in 
/home/atte/eslint-webpack-plugin-test/src/index.js
  1:1  warning  Expected indentation of 0 spaces but found 2  indent
  1:3  warning  Unexpected console statement                  no-console

✖ 2 problems (0 errors, 2 warnings)
  0 errors and 1 warning potentially fixable with the `--fix` option.

ℹ 「wdm」: Compiled with warnings.

How Do We Reproduce?

Example repo: https://github.com/attekemppila/eslint-webpack-plugin-test

npm run lint
# eslint warnings in src/index.js

npm run webpack:watch
# eslint warnings in src/index.js - reported at start-up, but should not be

npm run webpack:serve
# eslint warnings in src/index.js - reported at start-up, but should not be

Option to run only on files in module graph

  • Operating System: Windows 10
  • Node Version: 12.19.0
  • NPM Version: 6.14.8
  • webpack Version: 5.0.0
  • eslint-webpack-plugin Version: 2.1.0

Feature Proposal

One thing I liked about eslint-loader is that it was run only on files in the graph module of the build. That is, if a file wasn't imported anywhere it was ignored.

With eslint-webpack-plugin I need to set up separate files/extensions configuration instead of simply relying on webpack to provide the files.

Feature Use Case

This is very useful whenever you don't have time to deal with files that are currently not part of the build.

eslint-laoder failing the build even if the failOnError set to false

  • Operating System: OSX 10.15
  • Node Version: 10.21.0
  • NPM Version: 6.14.4
  • webpack Version: 4.43.0
  • eslint-webpack-plugin Version: 4.0.2

Expected Behavior

Build should be successful even if there are linting errors if set failOnError to false

Actual Behavior

even if I have set the failOnError to false build is failing if there is even a single linting error.

Code

const path = require("path");
module.exports = env => {
  return {
    entry: path.join(__dirname, "src/js/server.js"),
    output: {
      path: path.resolve(__dirname),
      publicPath: "/",
      filename: "server.bundle.js"
    },

    target: 'node',

    module: {
      rules: [
        {
          test: /\.(js|jsx)$/,
          exclude: /node_modules/,
          use: ["babel-loader",
            {
              loader: 'eslint-loader',
              options: {
                fix: false,
                emitWarning: false,
                emitError: false,
                failOnError: false,
                failOnWarning: false,
                quiet: true,
              }
            }
          ]
        }
      ]
    }
  };
};

Screenshot 2020-06-25 at 11 06 11 PM

eslint-loader in webpack4 cannot emit all lint errors

I know eslint-loader is deprecated by eslint-plugin-webpack, but I'm facing the issue of #59, so I have to use eslint-loader by now.
Also as no more issue can be opened in repo of eslint-loader, I open this issue here. Thanks.

  • Operating System: Windows10
  • Node Version:12.17.0
  • NPM Version:6.14.8
  • webpack Version:4.43.0
  • eslint-webpack-plugin Version:2.4.1
  • babel-loader Version: 8.1.0
  • eslint-loader Version 4.0.2
  • repository for reproducing the issue: https://github.com/mingluzhang/eslint-trouble-shoot

Expected Behavior

All lint errors should be emitted after starting webpack.

Actual Behavior

Lint errors in /Core which is not included in working directory of the project cannot be detected and emitted.

How Do We Reproduce?

Please try this repo: https://github.com/mingluzhang/eslint-trouble-shoot
The root directory of the project is /Project. Files in /Core are also referenced.
To start webpack, go to /Client/Project and run "npm run start".

webpack-dev-server hangs completely on error when failOnError: true

  • Operating System: Win10
  • Node Version: 12.16.1
  • NPM Version: 6.13.4
  • webpack Version: 4.44.2
  • eslint-webpack-plugin Version: 2.1.0

Expected Behavior

Build should be failed, webpack-dev-server job should exit or complete

Actual Behavior

The build is failed, but webpack-dev-server job hangs and does not finish
image

Code

webpack.common.config.js
https://gist.github.com/limejoe/04e87d012f0c27e1983a3a6da0c6be64

webpack.dev_ui_only.config.js
https://gist.github.com/limejoe/74cbb88a8e72d0852b799fcecb14f6a5

How Do We Reproduce?

run webpack-dev-server --open --config webpack.dev_ui_only.config.js

Eslint broken with schema-utils 3.x

  • Operating System: ArchLinux
  • Node Version: 14.13.0
  • NPM Version: 6.14.8
  • webpack Version: 4.44.2
  • eslint-webpack-plugin Version: 2.1.0

Actual Behavior

When I run Webpack it throws an error :

nicolas@laptop:~/PROJECTS/CONCERTO/concerto$ bin/webpack
/home/nicolas/PROJECTS/CONCERTO/concerto/node_modules/webpack-cli/bin/cli.js:93
				throw err;
				^

TypeError: (0 , _schemaUtils.default) is not a function
    at getOptions (/home/nicolas/PROJECTS/CONCERTO/concerto/node_modules/eslint-webpack-plugin/dist/options.js:62:28)
    at new ESLintWebpackPlugin (/home/nicolas/PROJECTS/CONCERTO/concerto/node_modules/eslint-webpack-plugin/dist/index.js:30:44)
    at Object.<anonymous> (/home/nicolas/PROJECTS/CONCERTO/concerto/config/webpack/development.js:10:38)
    at Module._compile (/home/nicolas/PROJECTS/CONCERTO/concerto/node_modules/v8-compile-cache/v8-compile-cache.js:194:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
    at Module.load (internal/modules/cjs/loader.js:950:32)
    at Function.Module._load (internal/modules/cjs/loader.js:791:14)
    at Module.require (internal/modules/cjs/loader.js:974:19)
    at require (/home/nicolas/PROJECTS/CONCERTO/concerto/node_modules/v8-compile-cache/v8-compile-cache.js:161:20)
    at WEBPACK_OPTIONS (/home/nicolas/PROJECTS/CONCERTO/concerto/node_modules/webpack-cli/bin/utils/convert-argv.js:114:13)
    at requireConfig (/home/nicolas/PROJECTS/CONCERTO/concerto/node_modules/webpack-cli/bin/utils/convert-argv.js:116:6)
    at /home/nicolas/PROJECTS/CONCERTO/concerto/node_modules/webpack-cli/bin/utils/convert-argv.js:123:17
    at Array.forEach (<anonymous>)
    at module.exports (/home/nicolas/PROJECTS/CONCERTO/concerto/node_modules/webpack-cli/bin/utils/convert-argv.js:121:15)
    at /home/nicolas/PROJECTS/CONCERTO/concerto/node_modules/webpack-cli/bin/cli.js:71:45
    at Object.parse (/home/nicolas/PROJECTS/CONCERTO/concerto/node_modules/yargs/build/lib/yargs.js:587:13)
    at /home/nicolas/PROJECTS/CONCERTO/concerto/node_modules/webpack-cli/bin/cli.js:49:8
    at Object.<anonymous> (/home/nicolas/PROJECTS/CONCERTO/concerto/node_modules/webpack-cli/bin/cli.js:366:3)
    at Module._compile (internal/modules/cjs/loader.js:1085:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
    at Module.load (internal/modules/cjs/loader.js:950:32)
    at Function.Module._load (internal/modules/cjs/loader.js:791:14)
    at Module.require (internal/modules/cjs/loader.js:974:19)
    at require (internal/modules/cjs/helpers.js:88:18)
    at Object.<anonymous> (/home/nicolas/PROJECTS/CONCERTO/concerto/node_modules/webpack/bin/webpack.js:156:2)
    at Module._compile (internal/modules/cjs/loader.js:1085:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
    at Module.load (internal/modules/cjs/loader.js:950:32)
    at Function.Module._load (internal/modules/cjs/loader.js:791:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)

How Do We Reproduce?

Run CI with schema-utils 3.x ?

'threads' doesn't compatiable with webpack multi-compiler

  • Operating System: macOS
  • Node Version: 12.14.0
  • NPM Version: 6.13.4 (yarn 1.22.10)
  • webpack Version: 4.44.2/webpack@5
  • eslint-webpack-plugin Version: 2.4.1

Thanks to the contributors of this plugin, it solves many pain points of eslint-loader.

We are using webpack to output different type of bundle through multi-compiler. If setting threads of eslint-webpack-plugin, the output will be incomplete. So it's not recommended to use this option with webpack multi-compiler?
Or it can be fixed in webpack? The result of webpack@4 and webpack@5 is similar.

Expected Behavior

bundle output should be

dist
├── desktop.js
└── mobile.js

Actual Behavior

bundle output is incomplete

dist
├── desktop.js

[email protected] and [email protected] with threads

bundle output: incomplete
console output

[webpack-cli] Compilation finished
✨  Done in 2.93s.

Some of our project's tests are based on the output of webpack. So the incomplete console output let the tests fail after bumping the version of eslint-webpack-plugin to 2.4.1.

[email protected] and [email protected] with threads

bundle output: High probability incomplete, Small probability complete(according to the test of reproducible repo)
console output

[webpack-cli] Compilation finished
[webpack-cli] Compilation finished
Hash: d3616dbfeab31a03f79ed3616dbfeab31a03f79e
Version: webpack 4.44.2
Child mobile:
    Hash: d3616dbfeab31a03f79e
    Time: 508ms
    Built at: 12/02/2020 5:04:22 AM
        Asset        Size  Chunks             Chunk Names
    mobile.js  1010 bytes       0  [emitted]  main
    Entrypoint main = mobile.js
    [0] ./src/index.js 38 bytes {0} [built]
Child desktop:
    Hash: d3616dbfeab31a03f79e
    Time: 537ms
    Built at: 12/02/2020 5:04:22 AM
         Asset        Size  Chunks             Chunk Names
    desktop.js  1010 bytes       0  [emitted]  main
    Entrypoint main = desktop.js
    [0] ./src/index.js 38 bytes {0} [built]
✨  Done in 2.12s.

How Do We Reproduce?

Reproducible repo

When watching files - new errors and warnings don't show when output hash remains the same

  • Operating System: Linux (most probably unrelated)
  • Node Version: 12.14.1 (most probably unrelated)
  • NPM Version: 6.13.4 (most probably unrelated)
  • webpack Version: 4.41.6
  • eslint-webpack-plugin Version: 0.1.0

Expected Behavior

ESLint validation (errors/no errors any more) should print out in webpack watch mode regardless of whether final build did run or not.

Actual Behavior

ESLint validation (errors/no errors any more) does not print out current ESLint validation state when webpack does not update chunks in watch mode. This is the case when using babel and changing only trailing spaces. The transpiled code then did not change and no chunks will be rebuild. While this is fine, the ESLint validation doesn't update either: You see webpack processing (suppose you have --progress flag set) but newly added ESLint errors are print out or "visually removed" from output when fixed.

For eslint-loader this bug is already fixed. We use eslint-webpack-plugin only to have ESLint checks ONLY when changing files in watch mode (lintDirtyModulesOnly).

Code

// webpack.config.js
new ESLintPlugin({
  extensions: ['.js', '.mjs'], // Necessary to have linting at all;
  lintDirtyModulesOnly: true, // Lint only changed files in watch mode (not on normal build or initial watch build)

  // Always print errors and warnings (don't use auto config)
  emitError: true,
  emitWarning: true
})

Only lints and shows errors for most recently saved file in watch mode

  • Operating System: OSX 10.15.4
  • Node Version: v12.18.0
  • NPM Version: 6.14.8
  • webpack Version: 5.4.0
  • eslint-webpack-plugin Version: 2.3.0

Expected Behavior

When in watch mode, each time I save a file, all files in the tree are linted.

Actual Behavior

When in Webpack watch mode, on start it lints and shows errors for both A.ts and file B.ts in the linting path. When I save A.ts it only checks and displays errors for A.ts. When I save B.ts, , it then only lints and shows errors for file B.

Code

// webpack.config.js
...
  plugins: [
    new CleanWebpackPlugin(),
    new ESLintPlugin({
      files: 'src/**/*',
      // formatter: 'codeframe', // table
      extensions: ['js', 'ts', 'tsx'],
      // cache: true,
      failOnError: false,
      failOnWarning: false,
      emitWarning: true,
    }),
  ],
...

How Do We Reproduce?

Switch between files with linting errors in them, and save each one while in watch mode on v2.3.0.

Fix / Work around

I have reverted back to v2.1.0

WDS significant increase in recompile time after migrating from eslint-loader

After migrating from eslint-loader and updating eslint to v7 WDS recompile time increased abnormal.

  • Operating System: Windows 10
  • Node Version: v12.13.1
  • NPM Version: 6.12.1
  • webpack Version: 4.42.0
  • eslint-webpack-plugin Version: 2.1.0
  • webpack-dev-server: 3.1.14
  • eslint : v.7.0.0

Expected Behavior

Recompile time stays normal.

Actual Behavior

Recompile time increased significantly from 1-3 seconds to around 10.

Importing CSS files causes error

  • Operating System: Devuan beowulf
  • Node Version: v10.21.0
  • NPM Version: 5.8.0
  • webpack Version: 5.6.0
  • eslint-webpack-plugin Version: 2.4.0

Expected Behavior

It should compile without problem

Actual Behavior

Running npx webpack shows the following error:

ERROR in ./node_modules/line-awesome/dist/line-awesome/css/line-awesome.min.css 1:0
Module parse failed: Unexpected token (1:0)
You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders

The line that causes that error is the following:

import "line-awesome/dist/line-awesome/css/line-awesome.min.css";

To fix it, I have to comment out that line and the npx webpack command compiles correctly

How Do We Reproduce?

Import a css file as in the example or as in the bootstrap documentation

webpack serve and eslint webpack plugin don't work. UnhandledPromiseRejectionWarning

I get unlimited errors when updated to latest dev deps and install this plugin instead of eslint-loader:

(node:8060) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 6)
(node:8060) UnhandledPromiseRejectionWarning: Error: Failed to load config "@sentry-internal/sdk" to extend from.
Referenced from: C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@sentry\utils\.eslintrc.js
    at configMissingError (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:289:9)
    at ConfigArrayFactory._loadExtendedShareableConfig (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:877:23)
    at ConfigArrayFactory._loadExtends (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:780:25)
    at ConfigArrayFactory._normalizeObjectConfigDataBody (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:719:25)
    at _normalizeObjectConfigDataBody.next (<anonymous>)
    at ConfigArrayFactory._normalizeObjectConfigData (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:664:20)
    at _normalizeObjectConfigData.next (<anonymous>)
    at ConfigArrayFactory.loadInDirectory (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:510:28)
    at CascadingConfigArrayFactory._loadConfigInAncestors (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\cascading-config-array-factory.js:378:46)
    at CascadingConfigArrayFactory._loadConfigInAncestors (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\cascading-config-array-factory.js:397:20)
(node:8060) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 7)
(node:8060) UnhandledPromiseRejectionWarning: Error: Failed to load config "@sentry-internal/sdk" to extend from.
Referenced from: C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@sentry\utils\.eslintrc.js
    at configMissingError (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:289:9)
    at ConfigArrayFactory._loadExtendedShareableConfig (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:877:23)
    at ConfigArrayFactory._loadExtends (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:780:25)
    at ConfigArrayFactory._normalizeObjectConfigDataBody (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:719:25)
    at _normalizeObjectConfigDataBody.next (<anonymous>)
    at ConfigArrayFactory._normalizeObjectConfigData (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:664:20)
    at _normalizeObjectConfigData.next (<anonymous>)
    at ConfigArrayFactory.loadInDirectory (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:510:28)
    at CascadingConfigArrayFactory._loadConfigInAncestors (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\cascading-config-array-factory.js:378:46)
    at CascadingConfigArrayFactory._loadConfigInAncestors (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\cascading-config-array-factory.js:397:20)
(node:8060) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 8)
(node:8060) UnhandledPromiseRejectionWarning: Error: Failed to load config "@sentry-internal/sdk" to extend from.
Referenced from: C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@sentry\utils\.eslintrc.js
    at configMissingError (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:289:9)
    at ConfigArrayFactory._loadExtendedShareableConfig (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:877:23)
    at ConfigArrayFactory._loadExtends (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:780:25)
    at ConfigArrayFactory._normalizeObjectConfigDataBody (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:719:25)
    at _normalizeObjectConfigDataBody.next (<anonymous>)
    at ConfigArrayFactory._normalizeObjectConfigData (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:664:20)
    at _normalizeObjectConfigData.next (<anonymous>)
    at ConfigArrayFactory.loadInDirectory (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:510:28)
    at CascadingConfigArrayFactory._loadConfigInAncestors (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\cascading-config-array-factory.js:378:46)
    at CascadingConfigArrayFactory._loadConfigInAncestors (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\cascading-config-array-factory.js:397:20)
(node:8060) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 9)
(node:8060) UnhandledPromiseRejectionWarning: Error: Failed to load config "@sentry-internal/sdk" to extend from.
Referenced from: C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@sentry\utils\.eslintrc.js
    at configMissingError (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:289:9)
    at ConfigArrayFactory._loadExtendedShareableConfig (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:877:23)
    at ConfigArrayFactory._loadExtends (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:780:25)
    at ConfigArrayFactory._normalizeObjectConfigDataBody (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:719:25)
    at _normalizeObjectConfigDataBody.next (<anonymous>)
    at ConfigArrayFactory._normalizeObjectConfigData (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:664:20)
    at _normalizeObjectConfigData.next (<anonymous>)
    at ConfigArrayFactory.loadInDirectory (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:510:28)
    at CascadingConfigArrayFactory._loadConfigInAncestors (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\cascading-config-array-factory.js:378:46)
    at CascadingConfigArrayFactory._loadConfigInAncestors (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\cascading-config-array-factory.js:397:20)
(node:8060) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 10)
(node:8060) UnhandledPromiseRejectionWarning: Error: Failed to load config "@sentry-internal/sdk" to extend from.
Referenced from: C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@sentry\utils\.eslintrc.js
    at configMissingError (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:289:9)
    at ConfigArrayFactory._loadExtendedShareableConfig (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:877:23)
    at ConfigArrayFactory._loadExtends (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:780:25)
    at ConfigArrayFactory._normalizeObjectConfigDataBody (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:719:25)
    at _normalizeObjectConfigDataBody.next (<anonymous>)
    at ConfigArrayFactory._normalizeObjectConfigData (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:664:20)
    at _normalizeObjectConfigData.next (<anonymous>)
    at ConfigArrayFactory.loadInDirectory (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:510:28)
    at CascadingConfigArrayFactory._loadConfigInAncestors (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\cascading-config-array-factory.js:378:46)
    at CascadingConfigArrayFactory._loadConfigInAncestors (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\cascading-config-array-factory.js:397:20)
(node:8060) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 11)
(node:8060) UnhandledPromiseRejectionWarning: Error: Failed to load config "@sentry-internal/sdk" to extend from.
Referenced from: C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@sentry\utils\.eslintrc.js
    at configMissingError (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:289:9)
    at ConfigArrayFactory._loadExtendedShareableConfig (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:877:23)
    at ConfigArrayFactory._loadExtends (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:780:25)
    at ConfigArrayFactory._normalizeObjectConfigDataBody (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:719:25)
    at _normalizeObjectConfigDataBody.next (<anonymous>)
    at ConfigArrayFactory._normalizeObjectConfigData (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:664:20)
    at _normalizeObjectConfigData.next (<anonymous>)
    at ConfigArrayFactory.loadInDirectory (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:510:28)
    at CascadingConfigArrayFactory._loadConfigInAncestors (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\cascading-config-array-factory.js:378:46)
    at CascadingConfigArrayFactory._loadConfigInAncestors (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\cascading-config-array-factory.js:397:20)
(node:8060) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 12)
(node:8060) UnhandledPromiseRejectionWarning: Error: Failed to load config "@sentry-internal/sdk" to extend from.
Referenced from: C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@sentry\utils\.eslintrc.js
    at configMissingError (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:289:9)
    at ConfigArrayFactory._loadExtendedShareableConfig (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:877:23)
    at ConfigArrayFactory._loadExtends (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:780:25)
    at ConfigArrayFactory._normalizeObjectConfigDataBody (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:719:25)
    at _normalizeObjectConfigDataBody.next (<anonymous>)
    at ConfigArrayFactory._normalizeObjectConfigData (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:664:20)
    at _normalizeObjectConfigData.next (<anonymous>)
    at ConfigArrayFactory.loadInDirectory (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:510:28)
    at CascadingConfigArrayFactory._loadConfigInAncestors (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\cascading-config-array-factory.js:378:46)
    at CascadingConfigArrayFactory._loadConfigInAncestors (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\cascading-config-array-factory.js:397:20)
(node:8060) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 13)
(node:8060) UnhandledPromiseRejectionWarning: Error: Failed to load config "@sentry-internal/sdk" to extend from.
Referenced from: C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@sentry\utils\.eslintrc.js
    at configMissingError (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:289:9)
    at ConfigArrayFactory._loadExtendedShareableConfig (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:877:23)
    at ConfigArrayFactory._loadExtends (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:780:25)
    at ConfigArrayFactory._normalizeObjectConfigDataBody (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:719:25)
    at _normalizeObjectConfigDataBody.next (<anonymous>)
    at ConfigArrayFactory._normalizeObjectConfigData (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:664:20)
    at _normalizeObjectConfigData.next (<anonymous>)
    at ConfigArrayFactory.loadInDirectory (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:510:28)
    at CascadingConfigArrayFactory._loadConfigInAncestors (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\cascading-config-array-factory.js:378:46)
    at CascadingConfigArrayFactory._loadConfigInAncestors (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\cascading-config-array-factory.js:397:20)
(node:8060) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 14)
(node:8060) UnhandledPromiseRejectionWarning: Error: Failed to load config "@sentry-internal/sdk" to extend from.
Referenced from: C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@sentry\utils\.eslintrc.js
    at configMissingError (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:289:9)
    at ConfigArrayFactory._loadExtendedShareableConfig (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:877:23)
    at ConfigArrayFactory._loadExtends (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:780:25)
    at ConfigArrayFactory._normalizeObjectConfigDataBody (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:719:25)
    at _normalizeObjectConfigDataBody.next (<anonymous>)
    at ConfigArrayFactory._normalizeObjectConfigData (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:664:20)
    at _normalizeObjectConfigData.next (<anonymous>)
    at ConfigArrayFactory.loadInDirectory (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:510:28)
    at CascadingConfigArrayFactory._loadConfigInAncestors (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\cascading-config-array-factory.js:378:46)
    at CascadingConfigArrayFactory._loadConfigInAncestors (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\cascading-config-array-factory.js:397:20)
(node:8060) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 15)
(node:8060) UnhandledPromiseRejectionWarning: Error: Failed to load config "@sentry-internal/sdk" to extend from.
Referenced from: C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@sentry\utils\.eslintrc.js
    at configMissingError (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:289:9)
    at ConfigArrayFactory._loadExtendedShareableConfig (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:877:23)
    at ConfigArrayFactory._loadExtends (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:780:25)
    at ConfigArrayFactory._normalizeObjectConfigDataBody (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:719:25)
    at _normalizeObjectConfigDataBody.next (<anonymous>)
    at ConfigArrayFactory._normalizeObjectConfigData (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:664:20)
    at _normalizeObjectConfigData.next (<anonymous>)
    at ConfigArrayFactory.loadInDirectory (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:510:28)
    at CascadingConfigArrayFactory._loadConfigInAncestors (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\cascading-config-array-factory.js:378:46)
    at CascadingConfigArrayFactory._loadConfigInAncestors (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\cascading-config-array-factory.js:397:20)
(node:8060) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 16)
(node:8060) UnhandledPromiseRejectionWarning: Error: Failed to load config "@sentry-internal/sdk" to extend from.
Referenced from: C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@sentry\utils\.eslintrc.js
    at configMissingError (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:289:9)
    at ConfigArrayFactory._loadExtendedShareableConfig (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:877:23)
    at ConfigArrayFactory._loadExtends (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:780:25)
    at ConfigArrayFactory._normalizeObjectConfigDataBody (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:719:25)
    at _normalizeObjectConfigDataBody.next (<anonymous>)
    at ConfigArrayFactory._normalizeObjectConfigData (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:664:20)
    at _normalizeObjectConfigData.next (<anonymous>)
    at ConfigArrayFactory.loadInDirectory (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:510:28)
    at CascadingConfigArrayFactory._loadConfigInAncestors (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\cascading-config-array-factory.js:378:46)
    at CascadingConfigArrayFactory._loadConfigInAncestors (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\cascading-config-array-factory.js:397:20)
(node:8060) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 17)
(node:8060) UnhandledPromiseRejectionWarning: Error: Failed to load config "@sentry-internal/sdk" to extend from.
Referenced from: C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@sentry\utils\.eslintrc.js
    at configMissingError (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:289:9)
    at ConfigArrayFactory._loadExtendedShareableConfig (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:877:23)
    at ConfigArrayFactory._loadExtends (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:780:25)
    at ConfigArrayFactory._normalizeObjectConfigDataBody (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:719:25)
    at _normalizeObjectConfigDataBody.next (<anonymous>)
    at ConfigArrayFactory._normalizeObjectConfigData (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:664:20)
    at _normalizeObjectConfigData.next (<anonymous>)
    at ConfigArrayFactory.loadInDirectory (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:510:28)
    at CascadingConfigArrayFactory._loadConfigInAncestors (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\cascading-config-array-factory.js:378:46)
    at CascadingConfigArrayFactory._loadConfigInAncestors (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\cascading-config-array-factory.js:397:20)
(node:8060) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 18)
(node:8060) UnhandledPromiseRejectionWarning: Error: Failed to load config "@sentry-internal/sdk" to extend from.
Referenced from: C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@sentry\utils\.eslintrc.js
    at configMissingError (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:289:9)
    at ConfigArrayFactory._loadExtendedShareableConfig (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:877:23)
    at ConfigArrayFactory._loadExtends (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:780:25)
    at ConfigArrayFactory._normalizeObjectConfigDataBody (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:719:25)
    at _normalizeObjectConfigDataBody.next (<anonymous>)
    at ConfigArrayFactory._normalizeObjectConfigData (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:664:20)
    at _normalizeObjectConfigData.next (<anonymous>)
    at ConfigArrayFactory.loadInDirectory (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:510:28)
    at CascadingConfigArrayFactory._loadConfigInAncestors (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\cascading-config-array-factory.js:378:46)
    at CascadingConfigArrayFactory._loadConfigInAncestors (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\cascading-config-array-factory.js:397:20)
(node:8060) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 19)
(node:8060) UnhandledPromiseRejectionWarning: Error: Failed to load config "@sentry-internal/sdk" to extend from.
Referenced from: C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@sentry\utils\.eslintrc.js
    at configMissingError (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:289:9)
    at ConfigArrayFactory._loadExtendedShareableConfig (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:877:23)
    at ConfigArrayFactory._loadExtends (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:780:25)
    at ConfigArrayFactory._normalizeObjectConfigDataBody (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:719:25)
    at _normalizeObjectConfigDataBody.next (<anonymous>)
    at ConfigArrayFactory._normalizeObjectConfigData (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:664:20)
    at _normalizeObjectConfigData.next (<anonymous>)
    at ConfigArrayFactory.loadInDirectory (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:510:28)
    at CascadingConfigArrayFactory._loadConfigInAncestors (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\cascading-config-array-factory.js:378:46)
    at CascadingConfigArrayFactory._loadConfigInAncestors (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\cascading-config-array-factory.js:397:20)
(node:8060) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 20)
(node:8060) UnhandledPromiseRejectionWarning: Error: Failed to load config "@sentry-internal/sdk" to extend from.
Referenced from: C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@sentry\utils\.eslintrc.js
    at configMissingError (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:289:9)
    at ConfigArrayFactory._loadExtendedShareableConfig (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:877:23)
    at ConfigArrayFactory._loadExtends (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:780:25)
    at ConfigArrayFactory._normalizeObjectConfigDataBody (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:719:25)
    at _normalizeObjectConfigDataBody.next (<anonymous>)
    at ConfigArrayFactory._normalizeObjectConfigData (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:664:20)
    at _normalizeObjectConfigData.next (<anonymous>)
    at ConfigArrayFactory.loadInDirectory (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:510:28)
    at CascadingConfigArrayFactory._loadConfigInAncestors (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\cascading-config-array-factory.js:378:46)
    at CascadingConfigArrayFactory._loadConfigInAncestors (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\cascading-config-array-factory.js:397:20)
(node:8060) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 21)
46% building 4/6 entries 2960/3800 dependencies 685/927 modules^C

if I comment all sentry entries, then these errors:

(node:10324) UnhandledPromiseRejectionWarning: Error: Failed to load config "@sentry-internal/sdk" to extend from.
Referenced from: C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@sentry\utils\.eslintrc.js
    at configMissingError (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:289:9)
    at ConfigArrayFactory._loadExtendedShareableConfig (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:877:23)
    at ConfigArrayFactory._loadExtends (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:780:25)
    at ConfigArrayFactory._normalizeObjectConfigDataBody (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:719:25)
    at _normalizeObjectConfigDataBody.next (<anonymous>)
    at ConfigArrayFactory._normalizeObjectConfigData (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:664:20)
    at _normalizeObjectConfigData.next (<anonymous>)
    at ConfigArrayFactory.loadInDirectory (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:510:28)
    at CascadingConfigArrayFactory._loadConfigInAncestors (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\cascading-config-array-factory.js:378:46)
    at CascadingConfigArrayFactory._loadConfigInAncestors (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\cascading-config-array-factory.js:397:20)
(node:10324) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 17)
(node:10324) UnhandledPromiseRejectionWarning: Error: Failed to load config "@sentry-internal/sdk" to extend from.
Referenced from: C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@sentry\utils\.eslintrc.js
    at configMissingError (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:289:9)
    at ConfigArrayFactory._loadExtendedShareableConfig (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:877:23)
    at ConfigArrayFactory._loadExtends (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:780:25)
    at ConfigArrayFactory._normalizeObjectConfigDataBody (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:719:25)
    at _normalizeObjectConfigDataBody.next (<anonymous>)
    at ConfigArrayFactory._normalizeObjectConfigData (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:664:20)
    at _normalizeObjectConfigData.next (<anonymous>)
    at ConfigArrayFactory.loadInDirectory (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:510:28)
    at CascadingConfigArrayFactory._loadConfigInAncestors (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\cascading-config-array-factory.js:378:46)
    at CascadingConfigArrayFactory._loadConfigInAncestors (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\cascading-config-array-factory.js:397:20)
(node:10324) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 18)
(node:10324) UnhandledPromiseRejectionWarning: Error: Failed to load config "@sentry-internal/sdk" to extend from.
Referenced from: C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@sentry\utils\.eslintrc.js
    at configMissingError (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:289:9)
    at ConfigArrayFactory._loadExtendedShareableConfig (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:877:23)
    at ConfigArrayFactory._loadExtends (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:780:25)
    at ConfigArrayFactory._normalizeObjectConfigDataBody (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:719:25)
    at _normalizeObjectConfigDataBody.next (<anonymous>)
    at ConfigArrayFactory._normalizeObjectConfigData (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:664:20)
    at _normalizeObjectConfigData.next (<anonymous>)
    at ConfigArrayFactory.loadInDirectory (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:510:28)
    at CascadingConfigArrayFactory._loadConfigInAncestors (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\cascading-config-array-factory.js:378:46)
    at CascadingConfigArrayFactory._loadConfigInAncestors (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\cascading-config-array-factory.js:397:20)
(node:10324) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 19)
(node:10324) UnhandledPromiseRejectionWarning: Error: Failed to load config "@sentry-internal/sdk" to extend from.
Referenced from: C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@sentry\utils\.eslintrc.js
    at configMissingError (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:289:9)
    at ConfigArrayFactory._loadExtendedShareableConfig (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:877:23)
    at ConfigArrayFactory._loadExtends (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:780:25)
    at ConfigArrayFactory._normalizeObjectConfigDataBody (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:719:25)
    at _normalizeObjectConfigDataBody.next (<anonymous>)
    at ConfigArrayFactory._normalizeObjectConfigData (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:664:20)
    at _normalizeObjectConfigData.next (<anonymous>)
    at ConfigArrayFactory.loadInDirectory (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:510:28)
    at CascadingConfigArrayFactory._loadConfigInAncestors (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\cascading-config-array-factory.js:378:46)
    at CascadingConfigArrayFactory._loadConfigInAncestors (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\cascading-config-array-factory.js:397:20)
(node:10324) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 20)
(node:10324) UnhandledPromiseRejectionWarning: Error: Failed to load config "@sentry-internal/sdk" to extend from.
Referenced from: C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@sentry\utils\.eslintrc.js
    at configMissingError (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:289:9)
    at ConfigArrayFactory._loadExtendedShareableConfig (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:877:23)
    at ConfigArrayFactory._loadExtends (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:780:25)
    at ConfigArrayFactory._normalizeObjectConfigDataBody (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:719:25)
    at _normalizeObjectConfigDataBody.next (<anonymous>)
    at ConfigArrayFactory._normalizeObjectConfigData (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:664:20)
    at _normalizeObjectConfigData.next (<anonymous>)
    at ConfigArrayFactory.loadInDirectory (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:510:28)
    at CascadingConfigArrayFactory._loadConfigInAncestors (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\cascading-config-array-factory.js:378:46)
    at CascadingConfigArrayFactory._loadConfigInAncestors (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\cascading-config-array-factory.js:397:20)
(node:10324) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 21)
(node:10324) UnhandledPromiseRejectionWarning: Error: Failed to load config "@ljharb" to extend from.
Referenced from: C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\qs\.eslintrc
    at configMissingError (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:289:9)
    at ConfigArrayFactory._loadExtendedShareableConfig (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:877:23)
    at ConfigArrayFactory._loadExtends (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:780:25)
    at ConfigArrayFactory._normalizeObjectConfigDataBody (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:719:25)
    at _normalizeObjectConfigDataBody.next (<anonymous>)
    at ConfigArrayFactory._normalizeObjectConfigData (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:664:20)
    at _normalizeObjectConfigData.next (<anonymous>)
    at ConfigArrayFactory.loadInDirectory (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:510:28)
    at CascadingConfigArrayFactory._loadConfigInAncestors (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\cascading-config-array-factory.js:378:46)
    at CascadingConfigArrayFactory._loadConfigInAncestors (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\cascading-config-array-factory.js:397:20)
(node:10324) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 22)
(node:10324) UnhandledPromiseRejectionWarning: Error: Failed to load config "@ljharb" to extend from.
Referenced from: C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\qs\.eslintrc
    at configMissingError (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:289:9)
    at ConfigArrayFactory._loadExtendedShareableConfig (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:877:23)
    at ConfigArrayFactory._loadExtends (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:780:25)
    at ConfigArrayFactory._normalizeObjectConfigDataBody (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:719:25)
    at _normalizeObjectConfigDataBody.next (<anonymous>)
    at ConfigArrayFactory._normalizeObjectConfigData (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:664:20)
    at _normalizeObjectConfigData.next (<anonymous>)
    at ConfigArrayFactory.loadInDirectory (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:510:28)
    at CascadingConfigArrayFactory._loadConfigInAncestors (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\cascading-config-array-factory.js:378:46)
    at CascadingConfigArrayFactory._loadConfigInAncestors (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\cascading-config-array-factory.js:397:20)
(node:10324) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 23)
(node:10324) UnhandledPromiseRejectionWarning: Error: Failed to load config "@ljharb" to extend from.
Referenced from: C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\qs\.eslintrc
    at configMissingError (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:289:9)
    at ConfigArrayFactory._loadExtendedShareableConfig (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:877:23)
    at ConfigArrayFactory._loadExtends (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:780:25)
    at ConfigArrayFactory._normalizeObjectConfigDataBody (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:719:25)
    at _normalizeObjectConfigDataBody.next (<anonymous>)
    at ConfigArrayFactory._normalizeObjectConfigData (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:664:20)
    at _normalizeObjectConfigData.next (<anonymous>)
    at ConfigArrayFactory.loadInDirectory (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:510:28)
    at CascadingConfigArrayFactory._loadConfigInAncestors (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\cascading-config-array-factory.js:378:46)
    at CascadingConfigArrayFactory._loadConfigInAncestors (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\cascading-config-array-factory.js:397:20)
(node:10324) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 24)
(node:10324) UnhandledPromiseRejectionWarning: Error: Failed to load config "@ljharb" to extend from.
Referenced from: C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\qs\.eslintrc
    at configMissingError (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:289:9)
    at ConfigArrayFactory._loadExtendedShareableConfig (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:877:23)
    at ConfigArrayFactory._loadExtends (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:780:25)
    at ConfigArrayFactory._normalizeObjectConfigDataBody (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:719:25)
    at _normalizeObjectConfigDataBody.next (<anonymous>)
    at ConfigArrayFactory._normalizeObjectConfigData (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:664:20)
    at _normalizeObjectConfigData.next (<anonymous>)
    at ConfigArrayFactory.loadInDirectory (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\config-array-factory.js:510:28)
    at CascadingConfigArrayFactory._loadConfigInAncestors (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\cascading-config-array-factory.js:378:46)
    at CascadingConfigArrayFactory._loadConfigInAncestors (C:\Projects\topcase\hrketing\src\Web\WebSPA\node_modules\@eslint\eslintrc\lib\cascading-config-array-factory.js:397:20)
(node:10324) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 25)
46% building 4/6 entries 4913/5000 dependencies 772/1119 modules^C

eslintrc:

/* eslint-env node */

module.exports = {
  root: true,
  env: {
    es2020: true,
    browser: true,
    node: true
  },
  parser: '@babel/eslint-parser',
  parserOptions: {
    ecmaVersion: 2020,
    sourceType: 'module',
    ecmaFeatures: {
      jsx: true,
      modules: true,
      impliedStrict: true

      // TODO [2021-01-01]: check later
      // legacyDecorators: true
    }
  },
  plugins: ['formatjs', 'module-resolver', 'react', 'react-hooks'],
  rules: {
    // TODO [engine:node@>=15]: we use babel everywhere, delete after updating node js
    'node/no-unsupported-features/es-syntax': 'off',

    // TODO [2021-01-01]: review later
    'node/no-missing-import': 'off',

    // TODO [2021-01-01]: review later
    'unicorn/no-null': 'off',
    'unicorn/no-useless-undefined': 'off',
    'unicorn/no-fn-reference-in-iterator': 'off',
    'unicorn/no-object-as-default-parameter': 'off',
    'unicorn/consistent-function-scoping': 'off',

    'react/prop-types': 'off',
    'react/require-default-props': 'off',
    'react/state-in-constructor': 'off',
    'react/jsx-props-no-spreading': 'off',
    'react/forbid-prop-types': 'off',
    'react/jsx-filename-extension': ['error', { extensions: ['.js'] }],

    // temp
    'react/jsx-one-expression-per-line': 'off',
    'react/destructuring-assignment': ['error', 'always', { ignoreClassFields: true }],

    'import/order': 'off',
    'import/extensions': ['error', 'ignorePackages', {
      js: 'never',
      jsx: 'never',
      ts: 'never',
      tsx: 'never',
      json: 'never'
    }],

    // TODO [2021-01-01]: review later https://github.com/airbnb/javascript/issues/1271#issuecomment-548688952
    'no-restricted-syntax': ['error', {
      selector: 'ForInStatement',
      // eslint-disable-next-line max-len
      message: 'for..in loops iterate over the entire prototype chain, which is virtually never what you want. Use Object.{keys,values,entries}, and iterate over the resulting array.'
    }, {
      selector: 'LabeledStatement',
      message: 'Labels are a form of GOTO; using them makes code confusing and hard to maintain and understand.'
    }, {
      selector: 'WithStatement',
      message: '`with` is disallowed in strict mode because it makes code impossible to predict and optimize.'
    }],

    // broken?
    'jsx-a11y/label-has-for': 'off',
    'module-resolver/use-alias': 2
  },
  settings: {
    'import/resolver': {
      'babel-module': {},
      node: {
        paths: ['./src']
      }
    }
  }
};

babelrc:

{
  "sourceMaps": true,
  "presets": [
    ["@babel/preset-env", {
      "corejs": { "version": 3, "proposals": true },
      "useBuiltIns": "usage",
      "exclude": ["babel-plugin-transform-async-to-generator", "babel-plugin-transform-regenerator"]
    }],
    "@babel/preset-react",
    "@babel/preset-flow"
  ],
  "plugins": [
    // ["@babel/plugin-transform-runtime", {
    //   "corejs": { "version": 3, "proposals": true },
    //   "regenerator": false
    // }],
    ["module:fast-async", {
      "spec": true,
      "compiler": {
        "promises": true,
        "generators": false
      }
    }],
    "react-hot-loader/babel",
    ["transform-react-remove-prop-types", {
      "mode": "wrap",
      "ignoreFilenames": ["node_modules"]
    }],
    ["babel-plugin-react-intl"],
    ["babel-plugin-import", {
      "libraryName": "antd",
      "style": "css"
    }],
    "babel-plugin-macros",
    ["babel-plugin-styled-components", {
      "pure": true
    }],
    ["babel-plugin-module-resolver", {
      "alias": {
        "reducers": "./src/reducers"
      }
    }],

    // Stage 0
    "@babel/plugin-proposal-function-bind",

    // Stage 1
    "@babel/plugin-proposal-export-default-from",
    "@babel/plugin-proposal-logical-assignment-operators",
    "@babel/plugin-proposal-optional-chaining",
    ["@babel/plugin-proposal-pipeline-operator", { "proposal": "minimal" }],
    "@babel/plugin-proposal-nullish-coalescing-operator",
    "@babel/plugin-proposal-do-expressions",

    // Stage 2
    // ["@babel/plugin-proposal-decorators", { "decoratorsBeforeExport": true }], // TODO [2021-01-01]: WIP
    ["@babel/plugin-proposal-decorators", { "legacy": true }],
    "@babel/plugin-proposal-function-sent",
    "@babel/plugin-proposal-export-namespace-from",
    "@babel/plugin-proposal-numeric-separator",
    "@babel/plugin-proposal-throw-expressions",

    // Stage 3
    "@babel/plugin-syntax-dynamic-import",
    "@babel/plugin-syntax-import-meta",
    "@babel/plugin-proposal-class-properties",
    "@babel/plugin-proposal-json-strings"
  ],
  "env": {
    "development": {
      "sourceMaps": true,
      "presets": [["@babel/preset-react", { "development": true }]]
    },
    "test": {
      "sourceMaps": true,
      "presets": [["@babel/preset-env", { "debug": true, "targets": { "node": "current" } }]]
    },
    "production": {
      "plugins": ["transform-react-remove-prop-types"]
    }
  }
}

common-webpack:

/* eslint-env node */
/* eslint-disable import/first, node/no-unpublished-import */

require('@babel/register')({
  presets: ['@babel/preset-env']
});

import { merge } from 'webpack-merge';
import WebpackBar from 'webpackbar';
import DotenvWebpackPlugin from 'dotenv-webpack';
import HtmlWebPackPlugin from 'html-webpack-plugin';
import { CleanWebpackPlugin } from 'clean-webpack-plugin';

// import FaviconsWebpackPlugin from 'favicons-webpack-plugin';

import { PATHS } from './configs/paths';
import devConfig from './webpack.config.babel.dev';
import prodConfig from './webpack.config.babel.prod';

const imageChunkMaxSize = 20;
const webpackConfig = {
  entry: {
    main: `${PATHS.src}/index.js`,
    icons: `${PATHS.src}/components/iconControls.js`
  },
  resolve: {
    mainFields: ['browser', 'main', 'module']
  },
  module: {
    rules: [{
      test: /\.(js(x)?)$/,
      exclude: /node_modules/,
      use: ['babel-loader?cacheDirectory', {
        loader: 'stylelint-custom-processor-loader',
        options: {
          emitWarning: true
        }
      }]
    }, {
      test: /\.(svg|eot|ttf|otf|woff(2)?)$/,
      include: PATHS.fonts,
      type: 'asset/resource',
      generator: { filename: 'assets/fonts/[name][ext]' }
    }, {
      test: /\.pdf$/,
      include: PATHS.pdfs,
      type: 'asset/resource',
      generator: { filename: 'assets/pdf/[name][ext]' }
    }, {
      test: /\.(png|gif|jp(e)?g)$/,
      include: PATHS.images,
      type: 'asset',
      parser: { dataUrlCondition: { maxSize: imageChunkMaxSize * 1024 } },
      generator: { filename: 'assets/images/[name][ext]' }
    }, {
      test: /\.svg$/,
      include: PATHS.images,
      use: 'svg-react-loader'
    }]
  },
  plugins: [
    new WebpackBar(),
    new DotenvWebpackPlugin({ systemvars: true }),
    new HtmlWebPackPlugin({
      base: '/',
      meta: {
        charset: 'utf-8',
        viewport: 'width=device-width, initial-scale=1, shrink-to-fit=no'
      },
      templateContent: ({ webpackConfig: { mode } }) => {
        const jivositeScript = mode === 'production'
          ? '<script src="//code.jivosite.com/widget.js" data-jv-id="LpGpBx0wzW" defer></script>'
          : '';

        return `<body><div id="react-app"></div>${jivositeScript}</body>`;
      }
    }),

    // TODO [2021-01-01]: migrate to webpack5 https://github.com/jantimon/favicons-webpack-plugin/issues/234
    // new FaviconsWebpackPlugin({
    //   logo: './src/assets/images/favicon.png',
    //   favicons: {
    //     appShortName: 'hrk',
    //     icons: {
    //       android: true,
    //       appleIcon: true,
    //       appleStartup: true,
    //       coast: true,
    //       favicons: true,
    //       firefox: true,
    //       windows: true,
    //       yandex: true
    //     }
    //   }
    // }),

    new CleanWebpackPlugin({ cleanStaleWebpackAssets: false })
  ]
};

export default (_, { mode }) => merge(
  webpackConfig,
  mode === 'production' ? prodConfig : devConfig
);

dev-webpack:

/* eslint-env node */
/* eslint-disable node/no-unpublished-import */

import webpack from 'webpack';

import ESLintPlugin from 'eslint-webpack-plugin';

import { WindowsBalloon } from 'node-notifier';
import UnusedWebpackPlugin from 'unused-webpack-plugin';
import CpuProfilerWebpackPlugin from 'cpuprofile-webpack-plugin';
import CircularDependencyPlugin from 'circular-dependency-plugin';
import FriendlyErrorsWebpackPlugin from 'friendly-errors-webpack-plugin';

import { PATHS } from './configs/paths';
import { getWebpackDevServerOptions } from './configs';

const styleLoader = {
  loader: 'style-loader',
  options: { insert: 'head', injectType: 'singletonStyleTag' }
};

const cssLoader = {
  loader: 'css-loader',
  options: { sourceMap: true }
};

const moduleCssLoader = {
  loader: cssLoader.loader,
  options: { ...cssLoader.options, esModule: true, modules: true, importLoaders: 1 }
};

export default {
  mode: 'development',
  devtool: 'cheap-source-map',
  devServer: getWebpackDevServerOptions(),
  output: {
    path: PATHS.dist,
    filename: '[name].js',
    chunkFilename: '[name].js'
  },
  resolve: {
    alias: {
      'react-dom': '@hot-loader/react-dom'
    }
  },
  module: {
    rules: [{
      test: /\.css$/,
      include: /\.module\.css$/,
      use: [styleLoader, moduleCssLoader]
    }, {
      test: /\.css$/,
      exclude: /\.module\.css$/,
      use: [styleLoader, cssLoader]
    }]
  },
  plugins: [
    new CpuProfilerWebpackPlugin(),

    new ESLintPlugin({ fix: true, cache: true, quiet: true, lintDirtyModulesOnly: true }),

    new FriendlyErrorsWebpackPlugin({
      compilationSuccessInfo: {
        messages: ['You application is running here http://localhost:3000'],
        notes: ['Some additionnal notes to be displayed unpon successful compilation']
      },
      onErrors: (severity, errors) => {
        if (severity !== 'error') {
          return;
        }

        const error = errors[0];
        new WindowsBalloon().notify({
          title: 'Webpack compilation error',
          message: `${severity}: ${error.name}`,
          subtitle: error.file || ''
        });
      },

      clearConsole: false
    }),

    new UnusedWebpackPlugin({
      directories: [PATHS.src],
      exclude: [
        '*.spec.js',
        '*.mocks.js',
        'utils/testUtils.js',
        'adapters/hooks',
        'assets/images/favicon.png',

        // TODO [2021-01-01]: add avatars, airport air filter and travel policies
        'AirportsPriceFilter.js',
        'components/TravelPolicies',
        'components/CustomReduxForm/SelectAvatar'
      ]
    }),

    new CircularDependencyPlugin({
      failOnError: false,
      exclude: /node_modules/,
      cwd: PATHS.src
    }),

    new webpack.HotModuleReplacementPlugin()
  ]
};

package.json

{
  "name": "hrketing.portal",
  "author": {
    "name": "hrketing",
    "email": "[email protected]",
    "url": "https://hrketing.ru"
  },
  "engines": {
    "node": "13.14.0"
  },
  "description": "hrketing - corporate services for employees",
  "version": "1.6.4",
  "keywords": [
    "hrketing",
    "redux",
    "webpack v5",
    "react v16",
    "react-router v5",
    "react-hot-loader v4"
  ],
  "private": true,
  "license": "ISC",
  "repository": {
    "type": "git",
    "url": "https://gitlab.itopcase.ru/Hrketing/HRketing"
  },
  "bugs": {
    "url": "https://hrk.atlassian.net/browse/PO",
    "url-rmine": "https://rmine.net/projects/dhr-businesstravel/issues"
  },
  "main": "server.js",
  "scripts": {
    "start": "npm run build && npm run start:server",
    "start:dev": "npm run build:dev && npm run inspect",
    "start:server": "node server.js",
    "inspect": "nodemon --inspect server.js",
    "build": "cross-env NODE_OPTIONS=\"--no-deprecation\" webpack --mode production --bail",
    "build:dev": "cross-env NODE_OPTIONS=\"--trace-deprecation\" webpack --progress --profile --hot",
    "watch": "nodemon --exec \"cross-env NODE_OPTIONS=\"--no-deprecation\" webpack serve --progress --hot\"",
    "webpack:migrate": "cross-env NODE_OPTIONS=\"--trace-deprecation\" webpack migrate webpack.config.babel.js",
    "lock-resolutions": "npx npm-force-resolutions",
    "test": "jest",
    "test:watch": "node --inspect=9999 ./node_modules/jest/bin/jest -i --watch",
    "test:coverage": "jest --coverage --colors",
    "lint:js": "eslint --cache .",
    "lint:css": "stylelint src/**/*.{js,css}",
    "lint:all": "run-s lint:js lint:css",
    "lint:js:fix": "npm run lint:js -- --fix",
    "lint:css:fix": "npm run lint:css -- --fix",
    "lint:all:fix": "run-s lint:js:fix lint:css:fix",
    "lint:nibble": "eslint-nibble --ext .jsx,.js .",
    "unstable:lint:pre": "prettier --check .",
    "unstable:lint:pre:fix": "prettier --write .",
    "release": "standard-version",
    "release:dry": "npm run release -- --dry-run",
    "release:patch": "npm run release -- --no-verify --release-as patch",
    "release:minor": "npm run release -- --no-verify --release-as minor",
    "release:major": "npm run release -- --no-verify --release-as major",
    "release:patch:alpha": "npm run release -- --no-verify --release-as patch --prerelease alpha",
    "release:minor:alpha": "npm run release -- --no-verify --release-as minor --prerelease alpha",
    "release:major:alpha": "npm run release -- --no-verify --release-as major --prerelease alpha",
    "release:patch:beta": "npm run release -- --no-verify --release-as patch --prerelease beta",
    "release:minor:beta": "npm run release -- --no-verify --release-as minor --prerelease beta",
    "release:major:beta": "npm run release -- --no-verify --release-as major --prerelease beta",
    "analyze:stats": "run-s webpack:stats bundle-analyzer",
    "webpack:stats": "npm run build -- --json > dist/stats.json",
    "webpack:profile": "npm run build -- --plugin cpuprofile-webpack-plugin",
    "bundle-analyzer": "npx webpack-bundle-analyzer dist/stats.json",
    "whybundled-analyzer": "npx whybundled dist/stats.json",
    "ncu": "ncu",
    "packages:list": "npm outdated & ncu",
    "packages:update": "ncu -u",
    "ntl": "npx ntl",
    "svg": "svgo --config ./.svgo.json",
    "flow": "flow",
    "flow:install": "flow-typed install",
    "flow-coverage": "flow-coverage-report"
  },
  "devDependencies": {
    "@babel/cli": "^7.12.1",
    "@babel/eslint-parser": "^7.12.1",
    "@babel/eslint-plugin": "^7.12.1",
    "@babel/plugin-proposal-class-properties": "^7.12.1",
    "@babel/plugin-proposal-decorators": "^7.12.1",
    "@babel/plugin-proposal-do-expressions": "^7.12.1",
    "@babel/plugin-proposal-export-default-from": "^7.12.1",
    "@babel/plugin-proposal-export-namespace-from": "^7.12.1",
    "@babel/plugin-proposal-function-bind": "^7.12.1",
    "@babel/plugin-proposal-function-sent": "^7.12.1",
    "@babel/plugin-proposal-json-strings": "^7.12.1",
    "@babel/plugin-proposal-logical-assignment-operators": "^7.12.1",
    "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1",
    "@babel/plugin-proposal-numeric-separator": "^7.12.1",
    "@babel/plugin-proposal-optional-chaining": "^7.12.1",
    "@babel/plugin-proposal-pipeline-operator": "^7.12.1",
    "@babel/plugin-proposal-throw-expressions": "^7.12.1",
    "@babel/plugin-syntax-dynamic-import": "^7.8.3",
    "@babel/plugin-syntax-import-meta": "^7.10.4",
    "@babel/plugin-transform-flow-strip-types": "^7.12.1",
    "@babel/preset-flow": "^7.12.1",
    "@babel/preset-react": "^7.12.1",
    "@webpack-cli/migrate": "^1.0.2",
    "babel-jest": "^26.6.1",
    "babel-loader": "^8.1.0",
    "babel-plugin-import": "^1.13.1",
    "babel-plugin-macros": "^2.8.0",
    "babel-plugin-module-resolver": "^4.0.0",
    "babel-plugin-react-intl": "^8.2.10",
    "babel-plugin-styled-components": "^1.11.1",
    "babel-plugin-transform-react-remove-prop-types": "^0.4.24",
    "browserslist": "^4.14.5",
    "cache-loader": "^4.1.0",
    "circular-dependency-plugin": "^5.2.2",
    "clean-webpack-plugin": "^3.0.0",
    "cpuprofile-webpack-plugin": "^1.10.3",
    "cross-env": "^7.0.2",
    "css-loader": "^5.0.0",
    "deasync": "^0.1.21",
    "dotenv-webpack": "^5.1.0",
    "eslint": "^7.12.1",
    "eslint-config-airbnb": "^18.2.0",
    "eslint-config-prettier": "^6.15.0",
    "eslint-import-resolver-babel-module": "^5.2.0",
    "eslint-import-resolver-node": "^0.3.4",
    "eslint-nibble": "^6.0.0",
    "eslint-plugin-eslint-comments": "^3.2.0",
    "eslint-plugin-flowtype": "^5.2.0",
    "eslint-plugin-formatjs": "^2.8.0",
    "eslint-plugin-import": "^2.21.2",
    "eslint-plugin-jsx-a11y": "^6.3.0",
    "eslint-plugin-module-resolver": "^1.0.0",
    "eslint-plugin-node": "^11.1.0",
    "eslint-plugin-prettier": "^3.1.4",
    "eslint-plugin-react": "^7.20.0",
    "eslint-plugin-react-hooks": "^4.0.0",
    "eslint-plugin-unicorn": "^23.0.0",
    "eslint-webpack-plugin": "^2.1.0",
    "extract-css-chunks-webpack-plugin": "^4.8.0",
    "fast-async": "^6.3.8",
    "favicons-webpack-plugin": "^5.0.0-alpha.3",
    "flow-bin": "^0.137.0",
    "flow-coverage-report": "^0.8.0",
    "flow-typed": "^3.2.1",
    "friendly-errors-webpack-plugin": "^1.7.0",
    "git-revision-webpack-plugin": "^3.0.6",
    "html-webpack-plugin": "^5.0.0-alpha.10",
    "husky": "^4.3.0",
    "image-trace-loader": "^1.0.2",
    "jest": "^26.6.1",
    "lint-staged": "^10.5.0",
    "node-notifier": "^8.0.0",
    "nodemon": "^2.0.6",
    "npm-check-updates": "^9.2.3",
    "npm-run-all": "^4.1.5",
    "prettier": "^2.1.2",
    "standard-version": "^9.0.0",
    "style-loader": "^2.0.0",
    "stylelint": "^13.7.2",
    "stylelint-a11y": "^1.2.3",
    "stylelint-config-airbnb": "0.0.0",
    "stylelint-config-idiomatic-order": "^8.1.0",
    "stylelint-config-prettier": "^8.0.2",
    "stylelint-config-rational-order": "^0.1.2",
    "stylelint-config-recommended": "^3.0.0",
    "stylelint-config-standard": "^20.0.0",
    "stylelint-config-styled-components": "^0.1.1",
    "stylelint-custom-processor-loader": "^0.6.0",
    "stylelint-order": "^4.1.0",
    "stylelint-prettier": "^1.1.2",
    "stylelint-processor-styled-components": "^1.10.0",
    "stylelint-scss": "^3.18.0",
    "svg-react-loader": "^0.4.6",
    "svgo": "^1.3.2",
    "unused-webpack-plugin": "^2.4.0",
    "webpack": "^5.4.0",
    "webpack-cli": "^4.2.0",
    "webpack-dev-server": "^3.11.0",
    "webpack-manifest-plugin": "^3.0.0-rc.0",
    "webpack-merge": "^5.3.0",
    "webpackbar": "^5.0.0-3"
  },
  "dependencies": {
    "@babel/core": "^7.12.3",
    "@babel/preset-env": "^7.12.1",
    "@babel/register": "^7.12.1",
    "@formatjs/intl-relativetimeformat": "^7.3.1",
    "@fortawesome/fontawesome-svg-core": "^1.2.32",
    "@fortawesome/free-brands-svg-icons": "^5.15.1",
    "@fortawesome/free-regular-svg-icons": "^5.15.1",
    "@fortawesome/free-solid-svg-icons": "^5.15.1",
    "@fortawesome/react-fontawesome": "^0.1.12",
    "@hot-loader/react-dom": "^16.11.0",
    "@sentry/browser": "^5.27.2",
    "antd": "^3.26.7",
    "axios": "^0.19.2",
    "bootstrap": "^4.4.1",
    "connect-timeout": "^1.9.0",
    "connected-react-router": "^6.6.1",
    "core-js": "^3.6.5",
    "date-fns": "^2.9.0",
    "date-fns-tz": "^1.0.9",
    "dotenv": "^8.2.0",
    "express": "^4.17.1",
    "final-form": "^4.18.6",
    "final-form-arrays": "^3.0.2",
    "final-form-calculate": "^1.3.1",
    "flat": "^5.0.2",
    "history": "^4.10.1",
    "http-proxy-middleware": "^1.0.6",
    "intl": "^1.2.5",
    "intl-pluralrules": "^1.1.1",
    "jsonwebtoken": "^8.5.1",
    "jwt-decode": "^3.0.0",
    "logrocket": "^1.0.14",
    "morgan": "^1.10.0",
    "morphism": "^1.12.3",
    "normalizr": "^3.6.1",
    "path": "^0.12.7",
    "prop-types": "^15.7.2",
    "qs": "^6.9.4",
    "rc-slider": "^8.7.1",
    "re-reselect": "^3.4.0",
    "react": "^16.12.0",
    "react-countdown": "^2.2.0",
    "react-datepicker": "^2.11.0",
    "react-dom": "^16.12.0",
    "react-final-form": "^6.3.3",
    "react-flip-toolkit": "^7.0.7",
    "react-gtm-module": "^2.0.8",
    "react-helmet": "^5.2.1",
    "react-hot-loader": "4.12.6",
    "react-id-swiper": "^2.4.0",
    "react-intl": "^3.11.0",
    "react-loadable": "^5.5.0",
    "react-modal": "^3.11.1",
    "react-redux": "^7.1.3",
    "react-responsive-modal": "^4.0.1",
    "react-router-dom": "^5.1.2",
    "react-select": "^3.0.8",
    "react-table": "7.0.0-beta.0",
    "react-text-mask": "^5.4.3",
    "react-tooltip": "^3.11.2",
    "react-yandex-maps": "^4.2.0",
    "recompose": "^0.30.0",
    "redux": "^4.0.5",
    "redux-actions": "^2.6.5",
    "redux-auth-wrapper": "^3.0.0",
    "redux-devtools-extension": "^2.13.8",
    "redux-form": "^8.2.6",
    "redux-immutable-state-invariant": "^2.1.0",
    "redux-logger": "^3.0.6",
    "redux-reset": "^0.3.0",
    "redux-thunk": "^2.3.0",
    "reselect": "^4.0.0",
    "response-time": "^2.3.2",
    "shortid": "^2.2.16",
    "styled-components": "^5.0.0",
    "swiper": "^5.3.0",
    "text-mask-addons": "^3.8.0",
    "winston": "^3.3.3"
  },
  "husky": {
    "hooks": {
      "pre-commit": "lint-staged"
    }
  },
  "lint-staged": {
    "*.(js|css|scss)": [
      "stylelint"
    ],
    "*.(js|jsx|ts|tsx)": "eslint --cache"
  },
  "resolutions": {
    "chokidar": "^3.4.3",
    "deasync": "0.1.20"
  }
}

system:

λ node -v
v13.14.0

λ npm -v
6.14.8

Builds without dev server and running linters directly from package.json works as expected,
also for simple source file like index.js: document.body.append('test 11111111111111111111111 test'); it works

Sorry for the long bug description

Error ins ESLint is not a constructor

  • Operating System:
  • Node Version: v15.2.1
  • NPM Version: ---
  • Yarn Version: 1.22.10
  • webpack Version: "^4.42.1",
  • eslint-webpack-plugin Version: "^2.4.0"

Expected Behavior

Not crash :D

Actual Behavior

Crashes :D

Code

Gist

How Do We Reproduce?

Repro

If you are on windows, make a .env in client and set it to

NODE_ENV=development
BACKEND_URL=http://localhost:5050

then run yarn run debug in the client directory.

Linting unlinked files on change

  • Operating System: Windows 10 v2004 64-bit
  • Node Version: v12.18.4
  • NPM Version: v6.14.6
  • Yarn version: v1.22.5
  • webpack Version: v4.44.2
  • eslint-webpack-plugin Version: v2.1.0

Expected Behavior

This only runs on changed files like eslint-loader did.

Actual Behavior

This runs on all files in the context and matching the extensions of the files on your drive.

Code

webpack.config.js

const webpackConfig = {
  // Shouldn't matter what other configurations exist.
  // ...
  entry: 'src1/someFile1.js',
  plugins: [
    new ESLintWebpackPlugin({
      context: 'src1',
      extensions: ['.js'],
      fix: true,
    }),
    new ESLintWebpackPlugin({
      context: 'src2',
      extensions: ['.js'],
      fix: true,
    }),
  ],
  // ...
}

eslintrc.js

const eslintConfig = {
  rules: {
    semi: 'error',
  }
}

src1/someFile1.js

const someCode = Function.prototype;

someCode();

src2/someFile2.js

const someOtherCode = Function.prototype;

someOtherCode();

How Do We Reproduce?

  1. Put those files in the correct folder structure.
  2. Make a change in someFile2.js that should normally trigger an ESLint auto-fix (like removing a semi-colon) and save. This won't cause anything to trigger from Webpack because it's not being imported in an entrypoint.
  3. Make a change in someFile1.js and someFile2.js will be ESLint auto-fixed.

This also occurs when starting Webpack as well as on-change. For instance, if I ran this to make a production build, it would still lint all changed files; even ones not included in an entrypoint.

When using the now-deprecated eslint-loader, this behavior only worked on files either included in the rule or part of an entrypoint. Sadly, eslint-webpack-plugin globally re-runs on all modified files when a change comes through on files that are imported from an entrypoint.

Either, it should only update files watched by an entrypoint or it should run on-file-change for any valid files in its context. It should not do both.

Cache cannot be used,why delete cache this option,It also exists in eslint-loader

// old
this.eslint = {
  cache: true,
  configFile: AbsPath(`../temp/configs/${useTs ? "ts" : "es"}lintrc.${frame}.js`, 1),
  formatter: EslintFriendlyFormatter,
  ignorePattern: eslintIgnores,
  rules: eslintRules
};
// new
this.eslint = new EslintPlugin({
  cache: true,
  extensions: ["js", "ts", "jsx", "tsx", "vue"],
  formatter: EslintFriendlyFormatter,
  overrideConfig: {
    ignorePatterns: eslintIgnores,
    rules: eslintRules
  },
  overrideConfigFile: AbsPath(`../temp/configs/${useTs ? "ts" : "es"}lintrc.${frame}.js`, 1)
});

cache don't work,why?

eslint-webpack-plugin failing the build despite having failOnError set to false

  • Operating System: Linux
  • Node Version: 14.15.1
  • NPM Version: 6.14.8
  • webpack Version: 4.44.2
  • eslint-webpack-plugin Version: 2.4.0

Expected Behavior

Show all ESLint errors and warnings, but do not fail the build process. Build should be successful no matter what linting errors are presented.

Actual Behavior

Despite having failOnError set to false, the build is always failing.

Code

      plugins: [
          ...
          new ESLintPlugin({
              extensions: 'ts',
              exclude: 'node_modules',
              emitError: true,
              failOnError: false,
              emitWarning: true,
              failOnWarning: false
          })
      ]

Failure:

[09:43:19] webpack built b7ea99f302259f7f4bac in 56785ms
✖ 「wdm」: Built at: 11/24/2020 9:43:19 AM

ERROR in 
/[redacted]/foobar.ts
  63:15  error  Multiple spaces found before '('              no-multi-spaces
  63:15  error  Unexpected space before function parentheses  space-before-function-paren
  63:23  error  Missing space before opening brace            space-before-blocks

✖ 3 problems (3 errors, 0 warnings)
  3 errors and 0 warnings potentially fixable with the `--fix` option.

ℹ 「wdm」: Failed to compile.

I'm also trying an alternative config and it doesn't fail, but it also doesn't show any error or warning:

          new ESLintPlugin({
             extensions: 'ts',
              exclude: 'node_modules',
              emitWarning: true,
              failOnWarning: false
          }),

Additionally, setting Webpack's noEmitOnErrors to false doesn't affect the build failure:

      optimization: {
          noEmitOnErrors: false
      }

I also must keep .eslintrc configuring rules as error and not warn for IDE reporting.

In summary, no matter what config I set, the linting errors are visible and the build is failing (unacceptable) or the build is successful, but nothing about the errors is visible, so at this point the plugin is useless in my case.

'(undefined) ESLint is not a constructor',

  new ESLintPlugin({
    extensions: ['js', 'vue'],
    formatter: require('eslint-friendly-formatter'),
    emitWarning: true,
  }),


"webpack": "4.44.1",

'(undefined) ESLint is not a constructor',
'(undefined) ESLint is not a constructor',
'(undefined) ESLint is not a constructor',
'(undefined) ESLint is not a constructor',
'(undefined) ESLint is not a constructor',
'(undefined) ESLint is not a constructor',
'(undefined) ESLint is not a constructor',
'(undefined) ESLint is not a constructor',
'(undefined) ESLint is not a constructor',
'(undefined) ESLint is not a constructor',
'(undefined) ESLint is not a constructor',
'(undefined) ESLint is not a constructor',
'(undefined) ESLint is not a constructor',
'(undefined) ESLint is not a constructor',
'(undefined) ESLint is not a constructor',
'(undefined) ESLint is not a constructor',
'(undefined) ESLint is not a constructor',
'(undefined) ESLint is not a constructor',
'(undefined) ESLint is not a constructor'

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.