@code-pushup/eslint-plugin
Version:
Code PushUp plugin for detecting problems in source code using ESLint.📋
39 lines • 1.86 kB
JavaScript
import { logger, pluralizeToken } from '@code-pushup/utils';
import { formatMetaLog } from '../meta/format.js';
import { nxProjectsToConfig } from './projects-to-config.js';
import { findAllDependencies } from './traverse-graph.js';
/**
* Accepts a target Nx projects, finds projects it depends on, and converts lint configurations to Code PushUp ESLint plugin parameters.
*
* Use when you wish to include a targeted subset of your Nx monorepo in your Code PushUp project.
* If you prefer to include all Nx projects, refer to {@link eslintConfigFromAllNxProjects} instead.
* if you'd like to skip dependencies of the provided target project use {@link eslintConfigFromNxProject} instead.
*
* @example
* import eslintPlugin, {
* eslintConfigFromNxProjectAndDeps,
* } from '@code-pushup/eslint-plugin';
*
* const projectName = 'backoffice'; // <-- name from project.json
*
* export default {
* plugins: [
* await eslintPlugin(
* await eslintConfigFromNxProjectAndDeps(projectName)
* )
* ]
* }
*
* @param projectName Nx project serving as main entry point
* @returns ESLint config and patterns, intended to be passed to {@link eslintPlugin}
*/
export async function eslintConfigFromNxProjectAndDeps(projectName) {
const { createProjectGraphAsync } = await import('@nx/devkit');
const projectGraph = await createProjectGraphAsync({ exitOnError: false });
const dependencies = findAllDependencies(projectName, projectGraph);
const targets = await nxProjectsToConfig(projectGraph, project => !!project.name &&
(project.name === projectName || dependencies.has(project.name)));
logger.info(formatMetaLog(`Inferred ${pluralizeToken('lint target', targets.length)} for Nx project "${projectName}" and its dependencies`));
return targets;
}
//# sourceMappingURL=find-project-with-deps.js.map