knip
Version:
Find and fix unused dependencies, exports and files in your TypeScript and JavaScript projects
53 lines (47 loc) • 1.69 kB
JavaScript
import { hasDependency } from '../../util/plugin.js';
import { getInputs } from './helpers.js';
const title = 'ESLint';
const enablers = ['eslint', '@eslint/js'];
const isEnabled = ({ dependencies, manifest }) => hasDependency(dependencies, enablers) ||
Boolean(manifest.name && /(^eslint-config|\/eslint-config)/.test(manifest.name));
const packageJsonPath = 'eslintConfig';
const config = [
'eslint.config.{js,cjs,mjs,ts,cts,mts}',
'.eslintrc',
'.eslintrc.{js,json,cjs}',
'.eslintrc.{yml,yaml}',
'package.json',
];
const isLoadConfig = ({ manifest }, dependencies) => {
const version = manifest.devDependencies?.['eslint'] || manifest.dependencies?.['eslint'];
if (version) {
const major = version.match(/\d+/);
if (major && Number.parseInt(major[0], 10) === 9 && dependencies.has('eslint-config-next')) {
return false;
}
}
return true;
};
const resolveConfig = (localConfig, options) => getInputs(localConfig, options);
const note = `### ESLint v9
The ESLint plugin config resolver is disabled when using \`eslint-config-next\` (\`next lint\`).
Root cause: [microsoft/rushstack#4965](https://github.com/microsoft/rushstack/issues/4965)/[#5049](https://github.com/microsoft/rushstack/issues/5049)
### ESLint v8
If relying on [configuration cascading](https://eslint.org/docs/v8.x/use/configure/configuration-files#cascading-and-hierarchy),
consider using an extended glob pattern like this:
\`\`\`json
{
"eslint": ["**/.eslintrc.js"]
}
\`\`\`
`;
export const docs = { note };
export default {
title,
enablers,
isEnabled,
packageJsonPath,
config,
isLoadConfig,
resolveConfig,
};