knip
Version:
Find and fix unused dependencies, exports and files in your TypeScript and JavaScript projects
48 lines (40 loc) • 1.55 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 entry = ['eslint.config.{js,cjs,mjs,ts,cts,mts}'];
const config = ['.eslintrc', '.eslintrc.{js,json,cjs}', '.eslintrc.{yml,yaml}', 'package.json'];
const resolveConfig = (localConfig, options) => getInputs(localConfig, options);
const note = `
Only regular \`import\` statements are considered by default.
The configuration object is not resolved to find dependencies for \`settings\` such as \`"eslint-import-resolver-typescript"\`.
To enable this, lift the \`entry\` to a \`config\` file like so:
\`\`\`json
{
"eslint": ["eslint.config.ts"]
}
\`\`\`
This is not enabled by default, since this exception may be thrown by a \`@rushstack/eslint-*\` package:
> \`Error: Failed to patch ESLint because the calling module was not recognized.\`
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,
entry,
config,
resolveConfig,
};