webpack-contrib / eslint-webpack-plugin Goto Github PK
View Code? Open in Web Editor NEWA ESLint plugin for webpack
License: MIT License
A ESLint plugin for webpack
License: MIT License
i replace eslint-loader with this plugin,but it only lint js file,does it support vue or react?
Exclude files based on glob pattern.
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.
Warning message should not be shown when emitWarning set to false.
Warning message is shown when emitWarning set to false.
// 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.
Warning message should not be shown when emitWarning set to false.
/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 😄
Only lint modules that were rebuilt after changing a file.
Every module is linted after changing a file.
new ESLintPlugin({
extensions: ['js', 'vue'],
})
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.
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
Webpack compilation time is the same as before
Webpack compilation time is the 2.5 times higher
// webpack.config.js
const ESLintPlugin = require('eslint-webpack-plugin');
module.exports = {
// ...
plugins: [new ESLintPlugin(options)],
// ...
};
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.
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.
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).
git clone https://github.com/Andrey-Bushman/excel-course.git
cd ./excel-course/
git checkout webpack
npm i
npm start
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)
Documentation Is:
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'.
eslint-webpack-plugin scan the code which is compiling
Runs.
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)
The project uses an ejected create-react-app base.
Production build to pass.
Production build throws OOM sigkill error.
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',
}),
},
},
}),
Let's assume scenario:
webpack entry point: index.js
import "lintError.js";
webpack is erroring with lintError.js's linting error
// import "lintErrorjs";
again webpack is erroring with lintError.js's linting error
after index.js is changed (2) webpack shouldn't throw error
webpack is throwing an error
the issue is this line:
eslint-webpack-plugin/src/linter.js
Line 84 in 4daddf5
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
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)
Fast compiling
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:
I've added before this line:
eslint-webpack-plugin/src/index.js
Line 91 in 46fc07a
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:
eslint-webpack-plugin/src/index.js
Line 101 in 46fc07a
awaitReport: 29.909ms
and
eslint-webpack-plugin/src/index.js
Line 114 in 46fc07a
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!!
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
I guess try it on a newly created React project with create-react-app
- facebook/create-react-app#10145 (comment)
"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"
}
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
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
}
Don't know.
Should emit errors and warnings in the console
Warnings are emitted as an object in the console
{
module: {
rules: [
{
test: /\.js$/,
use: [
{
loader: 'babel-loader'
}
]
}
]
},
plugins: [new ESLintPlugin()]
}
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.
The plugin should ignore missing eslint
configs of packages inside node_modules
.
Webpack build fails because of missing eslint
config inside node_modules
package that references it.
Inside webpack.config.js
(simplified for purpose of this issue)
const dev = process.env.NODE_ENV !== 'production';
plugins: [
new ESLintWebpackPlugin({
emitError: !dev,
emitWarning: dev,
}),
]
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)
[email protected]
[email protected]
[email protected]
[email protected]
(will also install @popperjs/[email protected]
as a dependency)tippy.js
into a bundleHello, 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.
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.
});
Importing the default exports causes either a TS or a JS error when esModuleInterop is disabled, as I better explain on my comment here.
https://gist.github.com/fcaminada/7d2cc25c74c3b7bdfe43246190c5d57d
The solution would be to follow the same example as other plugins such as CssMinimizerPlugin, for instance.
Creating new ESLintPlugin()
without options should behave the same as running eslint
on the command line without options.
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.
When using lintDirtyModulesOnly
w/Webpack 5, only real, dirty files should be linted.
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
);
}
}
);
}
};
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:
runCompiler.webpack.version
), orIf 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:
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).
Probably a development only feature:
emitWarning: true
so we don't expect the build to fail anyway.WDYT?
Add type definition file index.d.ts
or create repository @types/eslint-webpack-plugin
, thank you.
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.
// 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
}),
...
]
}
}
Maybe just use eslint-webpack-plugin and babel-loader together in one project.
Each module file should be linted only once.
The same module file is being linted multiple times unnecessarily which drastically increases the build time.
// webpack.config.js
new ESLintPlugin({
threads: true,
extensions: ['js', 'vue'],
})
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:
eslint-webpack-plugin/src/index.js
Lines 82 to 95 in f819203
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.
Hi @evilebottnawi
Can configure azure pipeline?
Running webpack with the fix option enabled should update the source code and autofix the rules that it can.
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.
// 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"
}
}
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: true
prints linting messages for dirty/changed files only when in watch mode.
Using lintDirtyModulesOnly: false
prints linting messages for all files as expected but lintDirtyModulesOnly: true
doesn't print anything at all.
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!
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
experiments.lazyCompilation
🤔 (only when not experimental)new ESLintPlugin({})
produce no errors.
This expression is not constructable.
Type 'typeof import("/path/to/node_modules/eslint-webpack-plugin/declarations/index")' has no construct signatures. ts(2351)
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"]
}
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.
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.
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
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.
This is very useful whenever you don't have time to deal with files that are currently not part of the build.
when I run webpack it takes waaay more time than eslint-loaded. Is this normal?
Build should be successful even if there are linting errors if set failOnError
to false
even if I have set the failOnError to false build is failing if there is even a single linting error.
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,
}
}
]
}
]
}
};
};
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.
All lint errors should be emitted after starting webpack.
Lint errors in /Core which is not included in working directory of the project cannot be detected and emitted.
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".
Build should be failed, webpack-dev-server job should exit or complete
The build is failed, but webpack-dev-server job hangs and does not finish
webpack.common.config.js
https://gist.github.com/limejoe/04e87d012f0c27e1983a3a6da0c6be64
webpack.dev_ui_only.config.js
https://gist.github.com/limejoe/74cbb88a8e72d0852b799fcecb14f6a5
run webpack-dev-server --open --config webpack.dev_ui_only.config.js
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)
Run CI with schema-utils
3.x ?
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.
bundle output should be
dist
├── desktop.js
└── mobile.js
bundle output is incomplete
dist
├── desktop.js
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.
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.
ESLint validation (errors/no errors any more) should print out in webpack watch mode regardless of whether final build did run or not.
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
).
// 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
})
When in watch mode, each time I save a file, all files in the tree are linted.
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.
// 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,
}),
],
...
Switch between files with linting errors in them, and save each one while in watch mode on v2.3.0
.
I have reverted back to v2.1.0
After migrating from eslint-loader and updating eslint to v7 WDS recompile time increased abnormal.
Recompile time stays normal.
Recompile time increased significantly from 1-3 seconds to around 10.
It should compile without problem
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
Import a css file as in the example or as in the bootstrap documentation
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
Not crash :D
Crashes :D
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.
This only runs on changed files like eslint-loader
did.
This runs on all files in the context and matching the extensions of the files on your drive.
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();
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.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.
// 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?
Use new ESLint class
https://eslint.org/docs/user-guide/migrating-to-7.0.0#deprecate-cliengine
Show all ESLint errors and warnings, but do not fail the build process. Build should be successful no matter what linting errors are presented.
Despite having failOnError set to false, the build is always failing.
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.
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'
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.