@@ -33,6 +33,7 @@ const getClientEnvironment = require('./env');
33
33
const ModuleNotFoundPlugin = require ( 'react-dev-utils/ModuleNotFoundPlugin' ) ;
34
34
const ForkTsCheckerWebpackPlugin = require ( 'react-dev-utils/ForkTsCheckerWebpackPlugin' ) ;
35
35
const typescriptFormatter = require ( 'react-dev-utils/typescriptFormatter' ) ;
36
+ const eslint = require ( 'eslint' ) ;
36
37
// @remove -on-eject-begin
37
38
const getCacheIdentifier = require ( 'react-dev-utils/getCacheIdentifier' ) ;
38
39
// @remove -on-eject-end
@@ -323,9 +324,30 @@ module.exports = function(webpackEnv) {
323
324
formatter : require . resolve ( 'react-dev-utils/eslintFormatter' ) ,
324
325
eslintPath : require . resolve ( 'eslint' ) ,
325
326
// @remove -on-eject-begin
326
- baseConfig : {
327
- extends : [ require . resolve ( 'eslint-config-react-app' ) ] ,
328
- } ,
327
+ baseConfig : ( ( ) => {
328
+ const eslintCli = new eslint . CLIEngine ( ) ;
329
+ let eslintConfig ;
330
+ try {
331
+ eslintConfig = eslintCli . getConfigForFile ( paths . appIndexJs ) ;
332
+ } catch ( e ) {
333
+ // A config couldn't be found.
334
+ }
335
+
336
+ // We allow overriding the config, only if it extends our config
337
+ // (`extends` can be a string or array of strings).
338
+ if (
339
+ process . env . EXTEND_ESLINT &&
340
+ eslintConfig &&
341
+ eslintConfig . extends &&
342
+ eslintConfig . extends . includes ( 'react-app' )
343
+ ) {
344
+ return eslintConfig ;
345
+ } else {
346
+ return {
347
+ extends : [ require . resolve ( 'eslint-config-react-app' ) ] ,
348
+ } ;
349
+ }
350
+ } ) ( ) ,
329
351
ignore : false ,
330
352
useEslintrc : false ,
331
353
// @remove -on-eject-end
0 commit comments