fix(angular): fix standalone eslint config generation (#20885)

This commit is contained in:
Miroslav Jonaš 2023-12-21 14:28:10 +01:00 committed by GitHub
parent 18ddc74f4f
commit fc176d3eec
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 38 additions and 26 deletions

View File

@ -687,11 +687,12 @@ describe('Linter', () => {
let e2eEslint = readJson('e2e/.eslintrc.json');
// should have plugin extends
expect(appEslint.overrides[0].extends).toBeDefined();
expect(appEslint.overrides[1].extends).toBeDefined();
expect(
e2eEslint.overrides.some((override) => override.extends)
).toBeTruthy();
let appOverrides = JSON.stringify(appEslint.overrides);
expect(appOverrides).toContain('plugin:@nx/javascript');
expect(appOverrides).toContain('plugin:@nx/typescript');
let e2eOverrides = JSON.stringify(e2eEslint.overrides);
expect(e2eOverrides).toContain('plugin:@nx/javascript');
expect(e2eOverrides).toContain('plugin:@nx/typescript');
runCLI(`generate @nx/js:lib ${mylib} --unitTestRunner=jest`);
verifySuccessfulMigratedSetup(myapp, mylib);
@ -700,11 +701,12 @@ describe('Linter', () => {
e2eEslint = readJson('e2e/.eslintrc.json');
// should have no plugin extends
expect(appEslint.overrides[0].extends).toBeUndefined();
expect(appEslint.overrides[1].extends).toBeUndefined();
expect(
e2eEslint.overrides.some((override) => override.extends)
).toBeFalsy();
appOverrides = JSON.stringify(appEslint.overrides);
expect(appOverrides).not.toContain('plugin:@nx/javascript');
expect(appOverrides).not.toContain('plugin:@nx/typescript');
e2eOverrides = JSON.stringify(e2eEslint.overrides);
expect(e2eOverrides).not.toContain('plugin:@nx/javascript');
expect(e2eOverrides).not.toContain('plugin:@nx/typescript');
});
it('(Angular standalone) should set root project config to app and e2e app and migrate when another lib is added', () => {
@ -720,10 +722,10 @@ describe('Linter', () => {
let e2eEslint = readJson('e2e/.eslintrc.json');
// should have plugin extends
expect(appEslint.overrides[1].extends).toBeDefined();
expect(
e2eEslint.overrides.some((override) => override.extends)
).toBeTruthy();
let appOverrides = JSON.stringify(appEslint.overrides);
expect(appOverrides).toContain('plugin:@nx/typescript');
let e2eOverrides = JSON.stringify(e2eEslint.overrides);
expect(e2eOverrides).toContain('plugin:@nx/typescript');
runCLI(`generate @nx/js:lib ${mylib} --no-interactive`);
verifySuccessfulMigratedSetup(myapp, mylib);
@ -732,12 +734,10 @@ describe('Linter', () => {
e2eEslint = readJson('e2e/.eslintrc.json');
// should have no plugin extends
expect(appEslint.overrides[1].extends).toEqual([
'plugin:@nx/angular-template',
]);
expect(
e2eEslint.overrides.some((override) => override.extends)
).toBeFalsy();
appOverrides = JSON.stringify(appEslint.overrides);
expect(appOverrides).not.toContain('plugin:@nx/typescript');
e2eOverrides = JSON.stringify(e2eEslint.overrides);
expect(e2eOverrides).not.toContain('plugin:@nx/typescript');
});
it('(Node standalone) should set root project config to app and e2e app and migrate when another lib is added', async () => {
@ -754,9 +754,12 @@ describe('Linter', () => {
let e2eEslint = readJson('e2e/.eslintrc.json');
// should have plugin extends
expect(appEslint.overrides[0].extends).toBeDefined();
expect(appEslint.overrides[1].extends).toBeDefined();
expect(e2eEslint.overrides[0].extends).toBeDefined();
let appOverrides = JSON.stringify(appEslint.overrides);
expect(appOverrides).toContain('plugin:@nx/javascript');
expect(appOverrides).toContain('plugin:@nx/typescript');
let e2eOverrides = JSON.stringify(e2eEslint.overrides);
expect(e2eOverrides).toContain('plugin:@nx/javascript');
expect(e2eOverrides).toContain('plugin:@nx/typescript');
runCLI(`generate @nx/js:lib ${mylib} --no-interactive`);
verifySuccessfulMigratedSetup(myapp, mylib);
@ -765,9 +768,13 @@ describe('Linter', () => {
e2eEslint = readJson('e2e/.eslintrc.json');
// should have no plugin extends
expect(appEslint.overrides[0].extends).toBeUndefined();
expect(appEslint.overrides[1].extends).toBeUndefined();
expect(e2eEslint.overrides[0].extends).toBeUndefined();
// should have no plugin extends
appOverrides = JSON.stringify(appEslint.overrides);
expect(appOverrides).not.toContain('plugin:@nx/javascript');
expect(appOverrides).not.toContain('plugin:@nx/typescript');
e2eOverrides = JSON.stringify(e2eEslint.overrides);
expect(e2eOverrides).not.toContain('plugin:@nx/javascript');
expect(e2eOverrides).not.toContain('plugin:@nx/typescript');
});
});

View File

@ -15,6 +15,10 @@ import {
replaceOverridesInLintConfig,
} from '@nx/eslint/src/generators/utils/eslint-file';
import { camelize, dasherize } from '@nx/devkit/src/utils/string-utils';
import {
javaScriptOverride,
typeScriptOverride,
} from '@nx/eslint/src/generators/init/global-eslint-config';
export async function addLintingGenerator(
tree: Tree,
@ -43,6 +47,7 @@ export async function addLintingGenerator(
.includes(`${options.projectRoot}/tsconfig.*?.json`);
replaceOverridesInLintConfig(tree, options.projectRoot, [
...(rootProject ? [typeScriptOverride, javaScriptOverride] : []),
{
files: ['*.ts'],
...(hasParserOptions