code-pushup / cli

A CLI to run all kinds of code quality measurements to align your team with company goals
https://code-pushup.dev
MIT License
158 stars 9 forks source link

[eslint-plugin@0.5.4] Nx 17.2.1 default ESLint base configuration fails #375

Closed LayZeeDK closed 2 months ago

LayZeeDK commented 6 months ago

What happened?

The ESLint plugin does not work with a freshly generated Nx 17.2.1 workspace (with Angular 17.0).

The .eslintrc.json file in the root of the workspace is generated with the following content

{
  "root": true,
  "ignorePatterns": ["**/*"],
  "plugins": ["@nx"],
  "overrides": [
    {
      "files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
      "rules": {
        "@nx/enforce-module-boundaries": [
          "error",
          {
            "enforceBuildableLibDependency": true,
            "allow": [],
            "depConstraints": [
              {
                "sourceTag": "*",
                "onlyDependOnLibsWithTags": ["*"]
              }
            ]
          }
        ]
      }
    },
    {
      "files": ["*.ts", "*.tsx"],
      "extends": ["plugin:@nx/typescript"],
      "rules": {}
    },
    {
      "files": ["*.js", "*.jsx"],
      "extends": ["plugin:@nx/javascript"],
      "rules": {}
    },
    {
      "files": ["*.spec.ts", "*.spec.tsx", "*.spec.js", "*.spec.jsx"],
      "env": {
        "jest": true
      },
      "rules": {}
    }
  ]
}

What would you expect to happen?

I should be able to run npx code-pushup collect without issues in an Nx 17.2.1 workspace with default configurations.

What steps did you take?

  1. Generate Nx 17.2.1 workspace (with Angular 17.0)
  2. Install Code PushUp CLI and ESLint plugin version 0.5.4
  3. Add code-pushup.config.js file with the ESLint plugin config derived from Nx but not categories

    import eslintPlugin, {
     eslintConfigFromNxProjects,
    } from '@code-pushup/eslint-plugin';
    
    export default {
     persist: {
       outputDir: '.code-pushup',
       format: ['json', 'md'],
     },
     plugins: [await eslintPlugin(await eslintConfigFromNxProjects())],
     categories: [],
    };
  4. Run npx code-pushup collect

What operation system are you on?

Windows

Node version

20.10.0

Relevant log output

Error: ESLint configuration in BaseConfig is invalid:
        - Property "overrides[0].files" is the wrong type (expected string but got `[]`).
        - "overrides[0].files" should NOT have fewer than 1 items. Value: [].
        - "overrides[0].files" should match exactly one schema in oneOf. Value: [].

    at ConfigValidator.validateConfigSchema (D:\projects\sandbox\nx172-angular170\node_modules\@eslint\eslintrc\dist\eslintrc.cjs:2177:19)
    at ConfigArrayFactory._normalizeConfigData (D:\projects\sandbox\nx172-angular170\node_modules\@eslint\eslintrc\dist\eslintrc.cjs:3019:19)
    at ConfigArrayFactory.create (D:\projects\sandbox\nx172-angular170\node_modules\@eslint\eslintrc\dist\eslintrc.cjs:2833:31)
    at createBaseConfigArray (D:\projects\sandbox\nx172-angular170\node_modules\@eslint\eslintrc\dist\eslintrc.cjs:3587:48)
    at new CascadingConfigArrayFactory (D:\projects\sandbox\nx172-angular170\node_modules\@eslint\eslintrc\dist\eslintrc.cjs:3727:30)
    at new CLIEngine (D:\projects\sandbox\nx172-angular170\node_modules\@code-pushup\eslint-plugin\node_modules\eslint\lib\cli-engine\cli-engine.js:617:36)
    at new ESLint (D:\projects\sandbox\nx172-angular170\node_modules\@code-pushup\eslint-plugin\node_modules\eslint\lib\eslint\eslint.js:430:27)
    at setupESLint (file:///D:/projects/sandbox/nx172-angular170/node_modules/@code-pushup/eslint-plugin/index.js:841:10)
    at eslintPlugin (file:///D:/projects/sandbox/nx172-angular170/node_modules/@code-pushup/eslint-plugin/index.js:871:18)
    at file:///D:/projects/sandbox/nx172-angular170/code-pushup.config.bundled_bz7z7rzfger.mjs:10:19
code-pushup collect

Run Plugins and collect results

Options:
      --progress             Show progress bar in stdout.
                                                       [boolean] [default: true]
      --verbose              When true creates more verbose output. This is help
                             ful when debugging.      [boolean] [default: false]
      --config               Path the the config file, e.g. code-pushup.config.j
                             s       [string] [default: "code-pushup.config.js"]
      --persist.outputDir    Directory for the produced reports         [string]
      --persist.filename     Filename for the produced reports.         [string]
      --persist.format       Format of the report output. e.g. `md`, `json`
                                                                         [array]
      --upload.organization  Organization slug from portal              [string]
      --upload.project       Project slug from portal                   [string]
      --upload.server        URL to your portal server                  [string]
      --upload.apiKey        API key for the portal server              [string]
      --onlyPlugins          List of plugins to run. If not set all plugins are
                             run.                          [array] [default: []]
  -h, --help                 Show help                                 [boolean]

Error: ESLint configuration in BaseConfig is invalid:
        - Property "overrides[0].files" is the wrong type (expected string but got `[]`).
        - "overrides[0].files" should NOT have fewer than 1 items. Value: [].
        - "overrides[0].files" should match exactly one schema in oneOf. Value: [].

    at ConfigValidator.validateConfigSchema (D:\projects\sandbox\nx172-angular170\node_modules\@eslint\eslintrc\dist\eslintrc.cjs:2177:19)
    at ConfigArrayFactory._normalizeConfigData (D:\projects\sandbox\nx172-angular170\node_modules\@eslint\eslintrc\dist\eslintrc.cjs:3019:19)
    at ConfigArrayFactory.create (D:\projects\sandbox\nx172-angular170\node_modules\@eslint\eslintrc\dist\eslintrc.cjs:2833:31)    
    at createBaseConfigArray (D:\projects\sandbox\nx172-angular170\node_modules\@eslint\eslintrc\dist\eslintrc.cjs:3587:48)        
    at new CascadingConfigArrayFactory (D:\projects\sandbox\nx172-angular170\node_modules\@eslint\eslintrc\dist\eslintrc.cjs:3727:30)
    at new CLIEngine (D:\projects\sandbox\nx172-angular170\node_modules\@code-pushup\eslint-plugin\node_modules\eslint\lib\cli-engine\cli-engine.js:617:36)
    at new ESLint (D:\projects\sandbox\nx172-angular170\node_modules\@code-pushup\eslint-plugin\node_modules\eslint\lib\eslint\eslint.js:430:27)
    at setupESLint (file:///D:/projects/sandbox/nx172-angular170/node_modules/@code-pushup/eslint-plugin/index.js:841:10)
    at eslintPlugin (file:///D:/projects/sandbox/nx172-angular170/node_modules/@code-pushup/eslint-plugin/index.js:871:18)
    at file:///D:/projects/sandbox/nx172-angular170/code-pushup.config.bundled_bz7z7rzfger.mjs:10:19
vmasek commented 5 months ago

This should be fixed by https://github.com/code-pushup/cli/pull/384, please try with latest version and let us know if we can close šŸ™‚

LayZeeDK commented 2 months ago

I tested this in our monorepo in Code PushUp version 0.35.0 and the issue has been resolved šŸŽ‰