UNPKG

@code-pushup/eslint-plugin

Version:

Code PushUp plugin for detecting problems in source code using ESLint.📋

54 lines • 1.98 kB
import { createRequire } from 'node:module'; import path from 'node:path'; import { fileURLToPath } from 'node:url'; import { parseSchema } from '@code-pushup/utils'; import { eslintPluginConfigSchema, eslintPluginOptionsSchema, } from './config.js'; import { listAuditsAndGroups } from './meta/index.js'; import { createRunnerConfig } from './runner/index.js'; /** * Instantiates Code PushUp ESLint plugin for use in core config. * * @example * import eslintPlugin from '@code-pushup/eslint-plugin' * * export default { * // ... core config ... * plugins: [ * // ... other plugins ... * await eslintPlugin({ * eslintrc: '.eslintrc.json', * patterns: ['src', 'test/*.spec.js'] * }) * ] * } * * @param config Configuration options. * @param options Optional settings for customizing the plugin behavior. * @returns Plugin configuration as a promise. */ export async function eslintPlugin(config, options) { const targets = parseSchema(eslintPluginConfigSchema, config, { schemaType: 'ESLint plugin config', }); const customGroups = options ? parseSchema(eslintPluginOptionsSchema, options, { schemaType: 'ESLint plugin options', }).groups : undefined; const { audits, groups } = await listAuditsAndGroups(targets, customGroups); const runnerScriptPath = path.join(fileURLToPath(path.dirname(import.meta.url)), '..', 'bin.js'); const packageJson = createRequire(import.meta.url)('../../package.json'); return { slug: 'eslint', title: 'ESLint', icon: 'eslint', description: 'Official Code PushUp ESLint plugin', docsUrl: 'https://www.npmjs.com/package/@code-pushup/eslint-plugin', packageName: packageJson.name, version: packageJson.version, audits, groups, runner: await createRunnerConfig(runnerScriptPath, audits, targets), }; } //# sourceMappingURL=eslint-plugin.js.map