diff --git a/packages/eslint-config-react-app/index.js b/packages/eslint-config-react-app/index.js index 9d876042c856c7d04ae4c5eeeb412679d99c2af1..42aa9db2cb077ee2860154d1e243e76575e9565d 100644 --- a/packages/eslint-config-react-app/index.js +++ b/packages/eslint-config-react-app/index.js @@ -235,6 +235,8 @@ module.exports = { ], // https://github.com/benmosher/eslint-plugin-import/tree/master/docs/rules + 'import/first': 'error', + 'import/no-amd': 'error', 'import/no-webpack-loader-syntax': 'error', // https://github.com/yannickcr/eslint-plugin-react/tree/master/docs/rules diff --git a/packages/react-dev-utils/eslintFormatter.js b/packages/react-dev-utils/eslintFormatter.js index a051b9c5b0efd12065e39881eed1357f573d6fb5..674f2f06decb943bf34d339deb7ff36a17720047 100644 --- a/packages/react-dev-utils/eslintFormatter.js +++ b/packages/react-dev-utils/eslintFormatter.js @@ -12,6 +12,7 @@ function isError(message) { function formatter(results) { let output = '\n'; + let hasErrors = false; results.forEach(result => { let messages = result.messages; @@ -19,7 +20,6 @@ function formatter(results) { return; } - let hasErrors = false; messages = messages.map(message => { let messageType; if (isError(message)) { @@ -61,6 +61,19 @@ function formatter(results) { output += `${outputTable}\n\n`; }); + if (hasErrors) { + // Unlike with warnings, we have to do it here. + // We have similar code in react-scripts for warnings, + // but warnings can appear in multiple files so we only + // print it once at the end. For errors, however, we print + // it here because we always show at most one error, and + // we can only be sure it's an ESLint error before exiting + // this function. + output += 'Search for the ' + + chalk.underline(chalk.red('rule keywords')) + + ' to learn more about each error.'; + } + return output; }