2de7b43b78
Fixes #40133 Fixes a small regression introduced in #39872. We should be able to detect if a non-empty `package.json#eslintConfig` property is present. ## Bug - [ ] Related issues linked using `fixes #number` - [ ] Integration tests added - [ ] Errors have helpful link attached, see `contributing.md` ## Feature - [ ] Implements an existing feature request or RFC. Make sure the feature request has been accepted for implementation before opening a PR. - [ ] Related issues linked using `fixes #number` - [ ] Integration tests added - [ ] Documentation added - [ ] Telemetry added. In case of a feature if it's used or not. - [ ] Errors have helpful link attached, see `contributing.md` ## Documentation / Examples - [ ] Make sure the linting passes by running `pnpm lint` - [ ] The examples guidelines are followed from [our contributing doc](https://github.com/vercel/next.js/blob/canary/contributing.md#adding-examples)
42 lines
1.1 KiB
TypeScript
42 lines
1.1 KiB
TypeScript
import { promises as fs } from 'fs'
|
|
|
|
export type ConfigAvailable = {
|
|
exists: boolean
|
|
emptyEslintrc?: boolean
|
|
emptyPkgJsonConfig?: boolean
|
|
firstTimeSetup?: true
|
|
}
|
|
|
|
export async function hasEslintConfiguration(
|
|
eslintrcFile: string | null,
|
|
packageJsonConfig: { eslintConfig: any } | null
|
|
): Promise<ConfigAvailable> {
|
|
const configObject = {
|
|
exists: false,
|
|
emptyEslintrc: false,
|
|
emptyPkgJsonConfig: false,
|
|
}
|
|
|
|
if (eslintrcFile) {
|
|
const content = await fs.readFile(eslintrcFile, { encoding: 'utf8' }).then(
|
|
(txt) => txt.trim().replace(/\n/g, ''),
|
|
() => null
|
|
)
|
|
|
|
if (
|
|
content === '' ||
|
|
content === '{}' ||
|
|
content === '---' ||
|
|
content === 'module.exports = {}'
|
|
) {
|
|
return { ...configObject, emptyEslintrc: true }
|
|
}
|
|
return { ...configObject, exists: true }
|
|
} else if (packageJsonConfig?.eslintConfig) {
|
|
if (Object.keys(packageJsonConfig?.eslintConfig).length) {
|
|
return { ...configObject, exists: true }
|
|
}
|
|
return { ...configObject, emptyPkgJsonConfig: true }
|
|
}
|
|
return configObject
|
|
}
|