diff --git a/packages/next/lib/eslint/writeDefaultConfig.ts b/packages/next/lib/eslint/writeDefaultConfig.ts index 96a244d217670..8b8acb54d38d8 100644 --- a/packages/next/lib/eslint/writeDefaultConfig.ts +++ b/packages/next/lib/eslint/writeDefaultConfig.ts @@ -49,25 +49,25 @@ export async function writeDefaultConfig( ) ) } - } else if ( - packageJsonConfig?.eslintConfig && - Object.entries(packageJsonConfig?.eslintConfig).length === 0 - ) { - packageJsonConfig.eslintConfig = defaultConfig + } else if (packageJsonConfig?.eslintConfig) { + // Creates .eslintrc only if package.json's eslintConfig field is empty + if (Object.entries(packageJsonConfig?.eslintConfig).length === 0) { + packageJsonConfig.eslintConfig = defaultConfig - if (pkgJsonPath) - await fs.writeFile( - pkgJsonPath, - CommentJson.stringify(packageJsonConfig, null, 2) + os.EOL - ) + if (pkgJsonPath) + await fs.writeFile( + pkgJsonPath, + CommentJson.stringify(packageJsonConfig, null, 2) + os.EOL + ) - console.log( - chalk.green( - `We detected an empty ${chalk.bold( - 'eslintConfig' - )} field in package.json and updated it for you to include the base Next.js ESLint configuration.` + console.log( + chalk.green( + `We detected an empty ${chalk.bold( + 'eslintConfig' + )} field in package.json and updated it for you to include the base Next.js ESLint configuration.` + ) ) - ) + } } else { await fs.writeFile( '.eslintrc', diff --git a/test/integration/eslint/config-in-package-json/package.json b/test/integration/eslint/config-in-package-json/package.json new file mode 100644 index 0000000000000..49b10275676d4 --- /dev/null +++ b/test/integration/eslint/config-in-package-json/package.json @@ -0,0 +1,6 @@ +{ + "eslintConfig": { + "extends": "next", + "root": true + } +} diff --git a/test/integration/eslint/config-in-package-json/pages/index.js b/test/integration/eslint/config-in-package-json/pages/index.js new file mode 100644 index 0000000000000..6181acb3d2c35 --- /dev/null +++ b/test/integration/eslint/config-in-package-json/pages/index.js @@ -0,0 +1,9 @@ +export default class Test { + render() { + return ( +