import { Linter, lintProjectGenerator } from '@nx/eslint'; import { addDependenciesToPackageJson, joinPathFragments, runTasksInSerial, Tree, } from '@nx/devkit'; import { extraEslintDependencies } from '@nx/react'; import { NormalizedSchema } from './normalize-options'; import { addExtendsToLintConfig, isEslintConfigSupported, } from '@nx/eslint/src/generators/utils/eslint-file'; export async function addLinting(host: Tree, options: NormalizedSchema) { if (options.linter === Linter.None) { return () => {}; } const lintTask = await lintProjectGenerator(host, { linter: options.linter, project: options.e2eProjectName, tsConfigPaths: [ joinPathFragments(options.e2eProjectRoot, 'tsconfig.app.json'), ], skipFormat: true, }); if (isEslintConfigSupported(host)) { addExtendsToLintConfig(host, options.e2eProjectRoot, 'plugin:@nx/react'); } const installTask = addDependenciesToPackageJson( host, extraEslintDependencies.dependencies, extraEslintDependencies.devDependencies ); return runTasksInSerial(lintTask, installTask); }