Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

@code-pushup/eslint-plugin

code-pushup19.9kMIT0.80.2TypeScript support: included

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

CLI, Code PushUp, ESLint, JavaScript, TypeScript, plugin, static analysis, linting, audit, performance, score monitoring, code quality, conformance, KPI tracking, tech debt, automated feedback, regression guard, actionable feedback, trend analysis

readme

@code-pushup/eslint-plugin

npm downloads dependencies

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


The plugin parses your ESLint configuration and lints targetted files using ESLint's Node.js API.

Detected ESLint rules are mapped to Code PushUp audits. Audit reports are calculated from the lint results in the following way:

  • the score is a binary "pass" or "fail" - 1 if no errors or warnings are found, otherwise 0
  • the value equals the sum of all errors and warnings
  • individual errors and warnings are mapped to issues in the audit details

Getting started

  1. If you haven't already, install @code-pushup/cli and create a configuration file.

  2. Install as a dev dependency with your package manager:

    npm install --save-dev @code-pushup/eslint-plugin
    yarn add --dev @code-pushup/eslint-plugin
    pnpm add --save-dev @code-pushup/eslint-plugin
  3. Prepare an ESLint configuration file with rules you're interested in measuring.

    Remember that Code PushUp only collects and uploads the results, it doesn't fail if errors are found. So you can be more strict than in most linter setups, the idea is to set aspirational goals and track your progress.

    💡 We recommend extending our own @code-pushup/eslint-config. 😇

  4. Add this plugin to the plugins array in your Code PushUp CLI config file (e.g. code-pushup.config.js).

    Pass in the path to your ESLint config file, along with glob patterns for which files you wish to target (relative to process.cwd()).

    import eslintPlugin from '@code-pushup/eslint-plugin';
    
    export default {
      // ...
      plugins: [
        // ...
        await eslintPlugin({ eslintrc: '.eslintrc.js', patterns: ['src/**/*.js'] }),
      ],
    };

    If you're using an Nx monorepo, additional helper functions are provided to simplify your configuration:

    • If you wish to combine all projects in your workspace into one report, use the eslintConfigFromAllNxProjects helper:

      import eslintPlugin, { eslintConfigFromAllNxProjects } from '@code-pushup/eslint-plugin';
      
      export default {
        plugins: [
          // ...
          await eslintPlugin(await eslintConfigFromAllNxProjects()),
        ],
      };

      You can also exclude specific projects if needed by passing their names in the exclude option:

      await eslintConfigFromAllNxProjects({ exclude: ['server'] });
    • If you wish to target a specific project along with other projects it depends on, use the eslintConfigFromNxProjectAndDeps helper and pass in in your project name:

      import eslintPlugin, { eslintConfigFromNxProjectAndDeps } from '@code-pushup/eslint-plugin';
      
      export default {
        plugins: [
          // ...
          await eslintPlugin(await eslintConfigFromNxProjectAndDeps('<PROJECT-NAME>')),
        ],
      };
  5. Run the CLI with npx code-pushup collect and view or upload report (refer to CLI docs).

Custom groups

You can extend the plugin configuration with custom groups to categorize ESLint rules according to your project's specific needs. Custom groups allow you to assign weights to individual rules, influencing their impact on the report. Rules can be defined as an object with explicit weights or as an array where each rule defaults to a weight of 1. Additionally, you can use wildcard patterns (*) to include multiple rules with similar prefixes.

import eslintPlugin from '@code-pushup/eslint-plugin';

export default {
  // ...
  plugins: [
    // ...
    await eslintPlugin(
      { eslintrc: '.eslintrc.js', patterns: ['src/**/*.js'] },
      {
        groups: [
          {
            slug: 'modern-angular',
            title: 'Modern Angular',
            rules: {
              '@angular-eslint/template/prefer-control-flow': 3,
              '@angular-eslint/template/prefer-ngsrc': 2,
              '@angular-eslint/component-selector': 1,
            },
          },
          {
            slug: 'type-safety',
            title: 'Type safety',
            rules: ['@typescript-eslint/no-unsafe-*'],
          },
        ],
      },
    ),
  ],
};

Optionally set up categories

  1. Reference audits (or groups) which you wish to include in custom categories (use npx code-pushup print-config to list audits and groups).

    Assign weights based on what influence each ESLint rule should have on the overall category score (assign weight 0 to only include as extra info, without influencing category score). Note that categories can combine multiple plugins.

    export default {
      // ...
      categories: [
        {
          slug: 'code-style',
          title: 'Code style',
          refs: [
            {
              type: 'audit',
              plugin: 'eslint',
              slug: 'no-var',
              weight: 1,
            },
            {
              type: 'audit',
              plugin: 'eslint',
              slug: 'prefer-const',
              weight: 1,
            },
            {
              type: 'audit',
              plugin: 'eslint',
              slug: 'react-hooks-rules-of-hooks',
              weight: 2,
            },
            // ...
          ],
        },
        {
          slug: 'performance',
          title: 'Performance',
          refs: [
            // ... weighted performance audits (e.g. from Lighthouse) ...
            {
              type: 'audit',
              plugin: 'eslint',
              slug: 'react-jsx-key',
              weight: 0,
            },
            // ...
          ],
        },
        // ...
      ],
    };

    Referencing individual audits provides a lot of granularity, but it can be difficult to maintain such a configuration when there is a high amount of lint rules. A simpler way is to reference many related audits at once using groups. E.g. you can distinguish rules which have declared a type of problem, suggestion, or layout:

    export default {
      // ...
      categories: [
        {
          slug: 'bug-prevention',
          title: 'Bug prevention',
          refs: [
            {
              type: 'group',
              plugin: 'eslint',
              slug: 'problems',
              weight: 100,
            },
          ],
        },
        {
          slug: 'code-style',
          title: 'Code style',
          refs: [
            {
              type: 'group',
              plugin: 'eslint',
              slug: 'suggestions',
              weight: 75,
            },
            {
              type: 'group',
              plugin: 'eslint',
              slug: 'formatting',
              weight: 25,
            },
          ],
        },
      ],
    };
  2. Run the CLI with npx code-pushup collect and view or upload report (refer to CLI docs).

Artifacts generation and loading

In addition to running ESLint from the plugin implementation, you can configure the plugin to consume pre-generated ESLint reports (artifacts). This is particularly useful for:

  • CI/CD pipelines: Use cached lint results from your build system
  • Monorepo setups: Aggregate results from multiple projects or targets
  • Performance optimization: Skip ESLint execution when reports are already available
  • Custom workflows: Integrate with existing linting infrastructure

The artifacts feature supports loading ESLint JSON reports that follow the standard ESLint.LintResult[] format.

Basic artifact configuration

Specify the path(s) to your ESLint JSON report files:

import eslintPlugin from '@code-pushup/eslint-plugin';

export default {
  plugins: [
    await eslintPlugin({
      artifacts: {
        artifactsPaths: './eslint-report.json',
      },
    }),
  ],
};

Multiple artifact files

Use glob patterns to aggregate results from multiple files:

export default {
  plugins: [
    await eslintPlugin({
      artifacts: {
        artifactsPaths: ['packages/**/eslint-report.json', 'apps/**/.eslint/*.json'],
      },
    }),
  ],
};

Generate artifacts with custom command

If you need to generate the artifacts before loading them, use the generateArtifactsCommand option:

export default {
  plugins: [
    await eslintPlugin({
      artifacts: {
        generateArtifactsCommand: 'npm run lint:report',
        artifactsPaths: './eslint-report.json',
      },
    }),
  ],
};

You can also specify the command with arguments:

export default {
  plugins: [
    await eslintPlugin({
      artifacts: {
        generateArtifactsCommand: {
          command: 'eslint',
          args: ['src/**/*.{js,ts}', '--format=json', '--output-file=eslint-report.json'],
        },
        artifactsPaths: './eslint-report.json',
      },
    }),
  ],
};

Nx Monorepo Setup

Caching artifact generation

To leverage Nx's caching capabilities, you need to generate a JSON artifact for caching, while still being able to see the ESLint violations in the terminal or CI logs, so you can fix them. This can be done by leveraging eslint formatter.

lint target from nx.json

{
  "lint": {
    "inputs": ["lint-eslint-inputs"],
    "outputs": ["{projectRoot}/.eslint/**/*"],
    "cache": true,
    "executor": "nx:run-commands",
    "options": {
      "command": "eslint",
      "args": ["{projectRoot}/**/*.ts", "{projectRoot}/package.json", "--config={projectRoot}/eslint.config.js", "--max-warnings=0", "--no-warn-ignored", "--error-on-unmatched-pattern=false", "--format=@code-pushup/eslint-formatter-multi"],
      "env": {
        "ESLINT_FORMATTER_CONFIG": "{\"outputDir\":\"{projectRoot}/.eslint\"}"
      }
    }
  }
}

As you can now generate the eslint-report.json from cache your plugin configuration can directly consume them.

code-pushup.config.ts target from nx.json

{
  "code-pushup": {
    "dependsOn": ["lint"],
    // also multiple targets can be merged into one report
    //     "dependsOn": ["lint", "lint-next"],
    "executor": "nx:run-commands",
    "options": {
      "command": "npx code-pushup",
    },
  },
}

and the project configuration leverages dependsOn to ensure the artefacts are generated when running code-pushup.

Your code-pushup.config.ts can then be configured to consume the cached artifacts:

import eslintPlugin from '@code-pushup/eslint-plugin';

export default {
  plugins: [
    await eslintPlugin({
      artifacts: {
        artifactsPaths: 'packages/**/.eslint/eslint-report-*.json',
      },
    }),
  ],
};

Find more details in our Nx setup guide.

changelog

0.80.2 (2025-09-26)

🩹 Fixes

  • plugin-lighthouse: prevent cleanup permissions error on windows (ac43d411)

❤️ Thank You

  • Matěj Chalk

0.80.1 (2025-09-26)

🩹 Fixes

  • nx-plugin: remove undocument env vars parsing from executor (c2f0fe4b)

❤️ Thank You

  • Matěj Chalk

0.80.0 (2025-09-24)

🚀 Features

  • add local GitHub Action for testing CI changes (#1104, #1093)
  • utils: export loose autocomplete type helper (d56a8463)

❤️ Thank You

  • Hanna Skryl @hanna-skryl
  • Matěj Chalk

0.79.2 (2025-09-23)

This was a version bump only, there were no code changes.

0.79.2-alpha.1 (2025-09-23)

🚀 Features

  • add local GitHub Action for testing CI changes (#1104, #1093)

❤️ Thank You

  • Hanna Skryl @hanna-skryl

0.79.1 (2025-09-04)

🩹 Fixes

  • nx-plugin: process output argument (#1105)

❤️ Thank You

  • Michael Hladky @BioPhoton

0.79.0 (2025-09-03)

🚀 Features

  • implement scoreTargets configuration for all plugins (#1099, #713, #721)
  • models,core: make runner args extensible by nesting persist config (fcb7aa3b)
  • utils: convert runner args to and from environment variables (5e7f4b78)

🩹 Fixes

  • core: use env vars instead of cli args for runner config (fd792173)

❤️ Thank You

  • Hanna Skryl @hanna-skryl
  • Matěj Chalk

0.78.0 (2025-09-03)

🚀 Features

  • plugin-eslint: add artefact options (#1089)

🩹 Fixes

  • nx-plugin: print process output for CLI command (#1095)

❤️ Thank You

  • Michael Hladky @BioPhoton

0.77.0 (2025-08-28)

🚀 Features

  • core: pass config to plugin runner (#1087)
  • plugin-eslint: add artifact loading logic (#1077)

🩹 Fixes

  • ci: prevent parallel git diff when detecting new issues in monorepo (f5f9114d)

❤️ Thank You

  • Matěj Chalk
  • Michael Hladky @BioPhoton

0.76.0 (2025-08-25)

🚀 Features

  • implement scoreTargets for audits (5db68e2e)
  • ci: add helper function for parsing configPatterns from json string (fd5edb09)
  • ci: export default settings and min/max limits (a6a485ee)
  • models: export default persist config (18e95ff5)
  • models: export default persist.skipReports value (dfc15aeb)

❤️ Thank You

  • Hanna Skryl @hanna-skryl
  • Matěj Chalk @matejchalk

0.75.0 (2025-08-22)

🚀 Features

  • implement scoreTarget for categories (44e49342)
  • nx-cloud: setup nx cloud workspace (47f14d3e)

🩹 Fixes

❤️ Thank You

  • Hanna Skryl @hanna-skryl
  • John Doe @simpleresume
  • Michael Hladky @rx-angular

0.74.1 (2025-08-19)

🩹 Fixes

  • ci: prevent invalid startLine 0 when downloading from portal (5153c88b)

❤️ Thank You

  • Matěj Chalk

0.74.0 (2025-08-13)

🚀 Features

  • add audit output caching for execute plugin (#1057)
  • add report option to cli (#1058)
  • add caching options to cli (#1059)

❤️ Thank You

  • Michael Hladky @BioPhoton

0.73.0 (2025-08-08)

🚀 Features

  • ci: add searchCommits option to extend portal cache range (0b14111f)

❤️ Thank You

  • Matěj Chalk

0.72.1 (2025-08-06)

🩹 Fixes

  • ci: download portal report for base commit and include details (21572d52)

❤️ Thank You

  • Matěj Chalk

0.72.0 (2025-08-06)

🚀 Features

  • ci: add configPatterns as optional performance optimization (823ade1f)
  • cli: use default report paths if --before/--after missing in compare command (61ee2272)
  • core: copy label from report.json inputs to report-diff.json output (2adcf9db)
  • models: add optional label to report.json schema (77d33b54)
  • utils: interpolate variables in strings (242435e0)

🔥 Performance

  • ci: use bulk command to compare reports for all projects (f9deac78)

❤️ Thank You

  • Matěj Chalk

0.71.0 (2025-08-01)

🚀 Features

  • ci: download report from graphql api and convert to report.json format (d35cd7a0)
  • ci: parse upload along with persist in print-config commands (a73bf21b)
  • ci: download previous report from portal if available (918eb0d5)
  • utils: add type helpers for lower/upper case conversions (50483748)

❤️ Thank You

  • Matěj Chalk

0.70.0 (2025-07-31)

🚀 Features

  • ci: update to zod v4 (c342dab1)
  • ci: remove redundant --no-progress argument (b0ed2fa9)
  • ci: skip persist.format args if defaults already configured (c11db95e)
  • cli: disable progress bar in CI environment (ecd42c60)
  • models: add generic artifact generation to enable caching (#1023)
  • models: update to zod v4 (7985c239)
  • nx-plugin: update to zod v4 (91774182)
  • plugin-coverage: update to zod v4 (a0814d31)
  • plugin-eslint: update zod to v4 (4ef657f1)
  • plugin-js-packages: update to zod v4 (c24b7435)
  • plugin-jsdocs: update to zod v4 (3444e8d3)
  • plugin-lighthouse: implement multiple URL support (f4db1368)
  • plugin-typescript: update to zod v4 (6de416f4)
  • utils: update to zod v4, replace zod-validation-error with z.prettifyError (b1364d7d)
  • utils: parse boolean environment variables (be08c188)
  • utils: detect ci environment (3430d31b)
  • utils: extract boolean value coercion to standalone function (f76e4fb0)

🩹 Fixes

  • ci: do not set --verbose by default (ab39b050)
  • cli: adapt format schema check to zod v4 (77a384b0)
  • models: use implementAsync for async z.function occurrences (17931228)

❤️ Thank You

  • Andrii Siuta
  • Hanna Skryl @hanna-skryl
  • Matěj Chalk

0.69.5 (2025-07-11)

🩹 Fixes

  • plugin-js-packages: include url for outdated packages in modern yarn (297766d1)
  • plugin-js-packages: include transitive dependencies in audit for modern yarn (8e285e93)

❤️ Thank You

  • Matěj Chalk

0.69.4 (2025-07-09)

🩹 Fixes

  • plugin-js-packages: parse yarn 4 audit output correctly (8041d870)

❤️ Thank You

  • Matěj Chalk

0.69.3 (2025-07-07)

🩹 Fixes

  • plugin-js-packages: prevent negative scores in yarn v2+ workspaces (b6f96330)

❤️ Thank You

  • Matěj Chalk

0.69.2 (2025-06-16)

🩹 Fixes

  • plugin-coverage: prevent invalid coverage when lcov has hit > found (c796f30e)

❤️ Thank You

  • Matěj Chalk

0.69.1 (2025-06-16)

🩹 Fixes

  • plugin-coverage: skip invalid line numbers from tools like pytest-cov (ba8b3171)

❤️ Thank You

  • Matěj Chalk

0.69.0 (2025-06-03)

🚀 Features

  • ci: use nx cache friendly output path for print-config command (35e334f5)
  • ci: do not skip nx/turbo cache for print-config and compare commands (c83ad36d)

❤️ Thank You

  • Matěj Chalk

0.68.0 (2025-05-19)

🚀 Features

  • core: include trees when uploading audits to portal (c1c6965e)
  • models: define tree data structure for audit details (63bf44ca)
  • plugin-coverage: replace issues with tree (2dc16890)
  • plugin-jsdocs: replace issues with tree (d347c0f2)
  • plugin-jsdocs: include end line number (f2102eb5)
  • plugin-lighthouse: convert criticalrequestchain details to trees and table (18d4230e)
  • plugin-lighthouse: convert treemap-data details to trees (19088927)
  • utils: generate ascii tree in full markdown report's audit details (ab462d42)
  • utils: convert files array to tree structure (211be5bf)
  • utils: aggregate coverage per folder (7ef0c14e)
  • utils: sort coverage tree alphabetically with folders before files (f87b869e)

🩹 Fixes

  • ci: use absolute path in print-config --output file (61ae18e1)

❤️ Thank You

  • Matěj Chalk

0.67.0 (2025-04-28)

🚀 Features

  • utils: create helper function for sequential Promise.all (556d8788)

🩹 Fixes

❤️ Thank You

  • Matěj Chalk
  • Michael @rx-angular

0.66.2 (2025-04-07)

🩹 Fixes

  • plugin-typescript: use consistent casing for plugin metadata (Typescript -> TypeScript) (8e78e8d8)
  • plugin-typescript: use same displayValue formatting as eslint (87dadf33)

❤️ Thank You

  • Matěj Chalk

0.66.1 (2025-04-07)

🩹 Fixes

  • plugin-typescript: use default export (1aa6211f)

❤️ Thank You

  • Matěj Chalk

0.66.0 (2025-04-04)

🚀 Features

  • plugin-typescript: prepare for first release (6b1e39d6)

🩹 Fixes

  • plugin-js-packages-e2e: npm outdated fallback to "wanted" if "current" is missing (ef5c2eee)

❤️ Thank You

  • Matěj Chalk
  • Vojtech Masek @vmasek

0.65.3 (2025-03-31)

🩹 Fixes

  • utils: update esbuild to version patched for GHSA-67mh-4wv8-2f99 (c5921ab2)

❤️ Thank You

  • Matěj Chalk

0.65.2 (2025-03-26)

🚀 Features

  • plugin-typescript: adjust logic (#975)

🩹 Fixes

  • plugin-js-packages: handle empty output from yarn outdated (a8cb0810)

❤️ Thank You

  • Matěj Chalk
  • Michael Hladky @BioPhoton

0.65.1 (2025-03-11)

🩹 Fixes

  • update pkgs (#965)
  • ci: prevent overwriting report artifacts (3c7fa08f)
  • nx-plugin: adjust upload config handling (#937)

❤️ Thank You

  • Matěj Chalk
  • Michael Hladky @BioPhoton

0.65.0 (2025-03-05)

🚀 Features

  • utils: add score filter to md report generation (#956)

❤️ Thank You

  • Michael Hladky @BioPhoton

0.64.2 (2025-03-05)

🩹 Fixes

  • update nx-verdaccio pkg (#954)
  • plugin-js-packages: ignore non-empty stderr (7936a00c)
  • utils: ignore non-json lines in fromJsonLines utility (7886c572)

❤️ Thank You

  • Matěj Chalk
  • Michael Hladky @BioPhoton

0.64.1 (2025-03-04)

🩹 Fixes

  • ci: always show execute process errors and log stdout if verbose (b41de478)
  • utils: remove partial from mergeConfigs return type (69c2ef4c)

❤️ Thank You

  • Matěj Chalk
  • Vojtech Masek @vmasek

0.64.0 (2025-02-27)

🚀 Features

  • ci: allow refs without shas, fetch if needed (2ee0a8d1)

❤️ Thank You

  • Matěj Chalk

0.63.0 (2025-02-26)

🚀 Features

  • ci: use temporary file for print-config instead of stdout (aa4d0b38)
  • cli: add --output=<file> option to print-config command (a1fde20c)

❤️ Thank You

  • Matěj Chalk

0.62.0 (2025-02-25)

🚀 Features

  • log process working directory as cwd if undefined (a0638f8c)

🩹 Fixes

  • utils: replace misleading commit labels in markdown diff (21a1f25d)

❤️ Thank You

  • Matěj Chalk
  • Vojtech Masek @vmasek

0.61.0 (2025-02-19)

🚀 Features

  • ci: disable nx/turbo cache for non-autorun code-pushup commands (29a1bc63)
  • models: do not throw if docs url invalid, treat as missing and log warning (a54295c6)

❤️ Thank You

  • Matěj Chalk

0.60.2 (2025-02-18)

🩹 Fixes

  • ci: prevent unknown pathspec error for custom base ref (60dfb5b2)

❤️ Thank You

  • Matěj Chalk

0.60.1 (2025-02-18)

🩹 Fixes

  • add toSorted polyfill as hotfix for bug in github actions runner (55704d18)
  • ci: prevent ambigious ref when checking head (f5f226e1)

❤️ Thank You

  • Matěj Chalk
  • Vojtech Masek @vmasek

0.60.0 (2025-02-18)

🚀 Features

  • ci: add skipComment option (9ac2a6ba)
  • plugin-typescript: add TS core logic (#932)
  • plugin-typescript: add plugin logic (#936)

🩹 Fixes

  • ci: ensure head ref is checked out (74db9023)

❤️ Thank You

  • Matěj Chalk
  • Michael Hladky @BioPhoton

0.59.0 (2025-02-14)

🚀 Features

  • plugin-coverage: do not halt plugin execution on fail (23f1ce5c)
  • utils: add string helper (#916)

🩹 Fixes

  • explicitly exit process with successful code to not leave cli hanging (2cb815bb)

❤️ Thank You

  • Michael Hladky @BioPhoton
  • Vojtech Masek @vmasek

0.58.0 (2025-02-12)

🚀 Features

  • models: auto-generate JSDoc annotations (29cf02ad)
  • plugin-coverage: support lcovonly option for vitest (b230a3d2)
  • plugin-eslint: add support for custom groups (#925)
  • plugin-jsdocs: add plugin-jsdocs to analyze documentation in ts/js projects (#896)
  • plugin-typescript: setup plugin project base (#917)

🩹 Fixes

  • handle skipped audits and groups (#911)
  • fix poppinss version (#921)
  • nest files with timestamp for plugin runners (4ecf9772)
  • models: add missing exports (#918)
  • nx-plugin: deep merge executor options (#927)

❤️ Thank You

  • Alejandro @aramirezj
  • Hanna Skryl @hanna-skryl
  • hanna-skryl
  • Michael Hladky @BioPhoton
  • Vojtech Masek @vmasek

0.57.0 (2024-12-17)

🚀 Features

  • ci: detect persist config from print-config (ad8bd284)
  • ci: remove obsolete output option (0b9d679e)
  • ci: implement run many command resolution for each monorepo tool (094797d9)
  • ci: add parallel option (85e51864)
  • ci: filter nx run-many by projects from nx show projects as fallback (97a603cc)
  • ci: sort nx projects alphabetically (6a6c2f3d)
  • ci: copy merged-report-diff.md from project to root (e1305295)
  • ci: implement bulk collecting reports for parallel monorepo runs (e0b4d97f)
  • core: enhance config validation (836b242d)
  • utils: implement type guard for nullable object props (c3fc549e)

🩹 Fixes

  • prevent "ExperimentalWarning: Importing JSON" logged to stderr (8ce9e635)
  • update progress bar gradually as plugin run complete (7a592ebd)
  • lint import extensions and fix missing .js extensions (9d6eacf4)
  • ci: handle non-JSON prefix/suffix lines from print-config (43ffcf2d)
  • ci: ensure valid output directory for reports and merged diff (5e36323d)
  • ci: resolve outputDir correctly by running workspace commands in project dir (94b25f88)
  • ci: only copy merged-report-diff.md when paths are different (f8ac4007)
  • nx-plugin: use wildcard path imports to prevent CJS runtime errors (31bed82a)
  • plugin-eslint: avoid directory imports (688a4859)
  • plugin-eslint: consider defaultOptions to ensure rule slugs from runner match (13de4b57)
  • plugin-eslint: handle mismatched slugs for legacy configs (e324f39d)
  • plugin-eslint: parse rule names containing slashes correctly (f1163d0a)

❤️ Thank You

  • Hanna Skryl @hanna-skryl
  • Matěj Chalk
  • Vojtech Masek @vmasek

0.56.0 (2024-11-29)

🚀 Features

  • ci: add nxProjectsFilter option, forwards custom filters to Nx CLI (93a6a428)
  • plugin-eslint: support new config format in nx helpers (effd5d26)

❤️ Thank You

  • Matěj Chalk

0.55.0 (2024-11-25)

🚀 Features

  • ci: accept custom output directory, with project name interpolation (db3fcced)
  • plugin-eslint: drop inline object support for eslintrc (incompatible with flat config) (ead1c0ad)
  • plugin-eslint: implement rules loader for flat config (e9edf0c0)
  • plugin-eslint: detect version of config format (a618bf29)
  • plugin-eslint: search for flat config files in parent directories (3e45ac07)
  • plugin-eslint: move eslint to peer deps, add v9 to supported range (953e3c76)
  • utils: implement and test helper function to find nearest file (2acdb2d8)

🩹 Fixes

  • plugin-eslint: remove unsupported parameter for ESLint 9+ (4b889d66)
  • plugin-eslint: use LegacyESLint if ESLINT_USE_FLAT_CONFIG=false in v9 (e9352808)
  • plugin-eslint: ensure file url scheme needed for dynamic imports on Windows (91c7678c)
  • plugin-js-packages: add ignoreExitCode option for yarn v2 package manager (#878)

❤️ Thank You

  • Edouard Maleix
  • Matěj Chalk

0.54.0 (2024-11-08)

🚀 Features

  • plugin-eslint: add exclude option for Nx projects (e9560f56)

🩹 Fixes

  • ci: pass project name to downloadReportArtifact (647f7e28)
  • ci: improve misleading logs (cfece081)
  • ci: catch errors from downloadReportArtifact - log warning and proceed (3df4a71a)
  • models: allow non-integers in audit values diff (61d49ea4)
  • plugin-eslint,plugin-coverage: future-proof version range of nx peer deps (52afea5a)
  • utils: always log single perfect audit (d8a7eb25)

❤️ Thank You

  • Hanna Skryl @hanna-skryl
  • hanna-skryl
  • Matěj Chalk

0.53.1 (2024-10-18)

🚀 Features

  • add keywords for NPM to display (17a0c498)

🩹 Fixes

  • ci: handle monorepo mode in non-PR flow (d7ba5a3f)

❤️ Thank You

  • Matěj Chalk
  • Vojtech Masek @vmasek

0.53.0 (2024-10-17)

🚀 Features

  • ci: add useful exports (844d529c)
  • utils: support GitLab report links (27d8a657)

🩹 Fixes

  • core: avoid portal-client import for enum conversions (1a68636f)

❤️ Thank You

  • hanna-skryl
  • Matěj Chalk

0.52.0 (2024-10-16)

🚀 Features

  • skip perfect scores in stdout summary (f423c6c4)
  • make portal-client dependency optional (18822a85)
  • ci: move in monorepo code from github-action (a9c51d98)
  • ci: move in code from github-action for issues, git diff and commands (bad87239)
  • ci: move in code for posting comment, generalized to any provider (b61d6747)
  • ci: move in main run functions from github-action and adapt (697948eb)
  • cli: handle invalid plugin filter options (9d756826)
  • cli: add skip and only category filters (149f54b2)
  • plugin-lighthouse: export default Chrome flags (2518b6ca)

❤️ Thank You

  • Hanna Skryl @hanna-skryl
  • hanna-skryl
  • Matěj Chalk

0.51.0 (2024-10-02)

🚀 Features

  • cli: add command option aliases (3ae16263)
  • nx-plugin: update unicode logo in stdout (1d5e3ad1)
  • utils: support local report links (f98b10a0)

🩹 Fixes

  • plugin-js-packages: filter out warnings (61ab0f75)
  • utils: handle rounding of small trend values (c23e38e6)
  • utils: format reports with unchanged score (cddbdd35)

❤️ Thank You

  • Hanna Skryl @hanna-skryl
  • hanna-skryl
  • Matěj Chalk

0.50.0 (2024-09-10)

🚀 Features

  • add defaults to js-packages plugin options (#762)
  • cli: add optional label option to compare command (b3494d63)
  • cli: scaffold merge-diffs command and test argument parsing (074c50fb)
  • cli: do not show help on error (7cefdaad)
  • core: include portal link and label in report-diff.json (e5036f1d)
  • core: implement mergeDiffs logic (0a3594d5)
  • core: improve error messages for report-diff.json parsing (85b3cdb1)
  • create-cli: package to align with package managers init command (#779)
  • models: add optional portalUrl and label to reports diff schema (8a1dacb1)
  • nx-plugin: extend config generator (#778)
  • nx-plugin: implement bin property in options (#773)
  • nx-plugin: add project prefix to plugin (#792)
  • plugin-lighthouse: omit audit details table title (eb7d6295)
  • test-nx-utils: add testing lib for nx specific logic (#777)
  • utils: increase audit value column width (2d125074)
  • utils: move groups and audits under details to make diff comment more compact (7d77b51a)
  • utils: implement diff markdown comment for monorepos (3cf7b114)
  • utils: skip unchanged categories and projects in report-diff.md (c834cfa1)
  • utils: sort projects in report-diff.md by most changed (40d24768)
  • utils: move project status from heading to paragraph in report-diff.md (260692e1)
  • utils: helper function to convert unknown errors to string (1ac3c231)

🩹 Fixes

  • plugin-lighthouse: process empty array flags (2101cf14)
  • plugin-lighthouse: process empty array flags (304b2298)

❤️ Thank You

  • Hanna Skryl @hanna-skryl
  • hanna-skryl
  • Matěj Chalk
  • Michael Hladky @BioPhoton
  • Vojtech Masek @vmasek

0.49.0 (2024-07-31)

🚀 Features

  • replace chalk with ansis (#750)
  • core: fetch portal comparison link if available when comparing reports (a08978e8)
  • nx-plugin: add executor to nx-plugin (#737)
  • nx-plugin: add crystal utils (#754)
  • utils: add nested objects to cli args parsing (#758)
  • utils: include optional link to portal in markdown comment (04455aeb)

🩹 Fixes

  • utils: add is binary icon (#749)

❤️ Thank You

  • Elderov Ali
  • Matěj Chalk
  • Michael Hladky @BioPhoton

0.48.0 (2024-07-15)

🚀 Features

  • implement skip-plugins option (73695855)
  • add skipPlugin options to global configs (64f45dab)
  • nx-plugin: add general executor logic (3b5b9770)
  • plugin-lighthouse: parse opportunity details from lighthouse report (2e76d08c)
  • testing-utils: add test helper for paths (ccef3a1c)
  • utils: merge configs function (ac67ea5c)
  • utils: add explicit types to merge config function and helpers (e16c1c43)
  • utils: export merge configs helper as public API (2f8d78e4)

🩹 Fixes

  • restore e2e tests (9a2e45b9)
  • nx-plugin: fix lint (d6161599)
  • nx-plugin: fix test for windows (4fed38cf)
  • utils: unchanged categories table markdown content (1df3ccb6)

❤️ Thank You

  • Matěj Chalk
  • Michael @rx-angular
  • Nacho Vazquez @NachoVazquez
  • Vojtech Masek @vmasek

0.47.0 (2024-07-01)

🚀 Features

  • plugin-coverage: include decimals in coverage percentage used as audit value (afeeb8e7)
  • plugin-lighthouse: add audit details to lighthouse plugin (#684)
  • plugin-lighthouse: keep audit values as floats (2627a879)
  • utils: add options to truncateTest (f3444d70)

🩹 Fixes

  • plugin-coverage: correct jest/vitest config lookup + respect project.json overrides (561ed3e3)
  • plugin-coverage: handle absolute paths in jest/vitest coverage directories (f997f860)
  • plugin-coverage: skip lcov reporter validation if jest config uses preset (f9718bdb)
  • plugin-coverage: support non-cjs jest configs (3fc351c2)

❤️ Thank You

  • Matěj Chalk
  • Michael @rx-angular
  • Michael Hladky @BioPhoton

0.46.0 (2024-06-19)

🚀 Features

  • cli: forward plugins and categories if onlyPlugins is invalid (1a6c6fa8)
  • plugin-lighthouse: add logLevel to lighthouse runner flags (120b3160)

🩹 Fixes

  • plugin-coverage: support newer nx versions (9e416852)

❤️ Thank You

  • Matěj Chalk
  • Michael @rx-angular

0.45.1 (2024-06-17)

🚀 Features

  • models: allow non-integer weights in refs (016e011f)
  • models: allow non-integer audit values (1db88e39)
  • plugin-js-packages: support multiple package.json and auto search (df87ff9b)

🩹 Fixes

  • round down report scores to avoid misleading perfect results (#700)
  • wrap paths in quotes in case of spaces (a3c0314d)

❤️ Thank You

  • Hanna Skryl @hanna-skryl
  • Katerina Pilatova
  • Matěj Chalk

0.45.0 (2024-06-03)

This was a version bump only, there were no code changes.

0.44.5 (2024-05-30)

🩹 Fixes

  • plugin-coverage: merge multiple results for a file (#688)

❤️ Thank You

  • Katka Pilátová

0.44.3 (2024-05-29)

🩹 Fixes

  • plugin-eslint: revert to explicit config file in nx helper (ecd82642)

❤️ Thank You

  • Matěj Chalk

0.44.2 (2024-05-28)

🚀 Features

  • plugin-eslint: support implicit configs (f89037ad)

❤️ Thank You

  • Matěj Chalk

0.44.1 (2024-05-23)

This was a version bump only, there were no code changes.

0.44.0 (2024-05-23)

🚀 Features

  • core: include audit table in portal upload (2b4f3e15)

❤️ Thank You

  • Matěj Chalk

0.43.1 (2024-05-23)

🩹 Fixes

  • plugin-coverage: always include issues array, even if empty (bd7c5631)
  • plugin-js-packages: always include issues array, even if empty (748eb64a)

❤️ Thank You

  • Matěj Chalk

0.43.0 (2024-05-22)

🚀 Features

  • plugin-eslint: rename eslintConfigFromNxProjects to eslintConfigFromAllNxProjects (068b3359)
  • plugin-eslint: rename eslintConfigFromNxProject to eslintConfigFromNxProjectAndDeps (efbb72ae)
  • plugin-eslint: add eslintConfigFromNxProject helper that doesn't include nx project deps (0706bdaf)

❤️ Thank You

  • Vojtech Masek @vmasek

0.42.1 (2024-05-22)

This was a version bump only, there were no code changes.

0.42.0 (2024-05-21)

This was a version bump only, there were no code changes.

0.39.0 (2024-04-29)

🚀 Features

  • plugin-eslint: support array of config and patterns to lint separately (7b1e4585)
  • plugin-eslint: nx helpers generate array of lint targets (10dd3c6a)

🩹 Fixes

  • ci: temporarily adjust e2e job (1e494c76)

🔥 Performance

  • plugin-eslint: run eslint as separate process to prevent exceeding memory (c25b3671)

❤️ Thank You

  • Matěj Chalk
  • Michael @rx-angular

0.35.0 (2024-04-09)

This was a version bump only, there were no code changes.

Changelog

This file was generated using @jscutlery/semver.

0.29.0 (2024-03-25)

Bug Fixes

  • cli: fix missing executable permissions for index.js (0fd2eb4)
  • plugin-eslint: allow minor updates to eslint dependency (efbe028)

Features

  • utils: use auto-link commit format (GitHub/GitLab) in markdown (2f26c6c)

0.28.0 (2024-03-22)

Bug Fixes

  • core: ensure output directory exists in compareReportFiles (cf309bc)
  • utils: prevent mixed summary when some audit changed only value (20673fd)
  • utils: use unicode arrows with wider OS support (271155e)

Features

  • cli: include md format by default (65a08ea)
  • core: create report-diff.md file if specified by persist.format (8c4e1e4)

0.27.1 (2024-03-19)

0.27.0 (2024-03-19)

Bug Fixes

  • package json lock (#562) (c73f3ac)
  • plugin-eslint: eslint startline can be zero (#563) (4eefb35)
  • utils: literal asterisk in Markdown doc should be escaped (6348ba3)
  • utils: use shields.io for colorizing changed values (d0eb475)

Features

  • cli: implement compare command (314e7ba)
  • core: add history logic (#541) (10df94c)
  • core: implement categories, groups and audits comparisons (72d6c14)
  • core: implement compare reports functions (5493cc4)
  • models: create reportsDiff schema (75dc8aa)
  • plugin-js-packages: add runner config integration test, restructure runner (cae4ca8)
  • plugin-js-packages: implement plugin schema and configuration flow (e2ce3f6)
  • plugin-js-packages: implement runner for npm audit (6aa55a2)
  • plugin-js-packages: implement runner for npm outdated (7cb623b)
  • plugin-js-packages: improve output, scoring, error handling (b9f1432)
  • plugin-js-packages: use group per check, audit per dependency group (1405e7d)
  • utils: add helper functions for diffing (4e87cd5)
  • utils: handle unchanged reports diff (0cdcb9e)
  • utils: implement markdown diff formatting (5f453ef)
  • utils: improve diff md formatting - change icon, n/a cells, percentage space (27290f2)
  • utils: improve reports diff formatting (2bee85e)
  • utils: include unchanged and added categories in markdown table (4e53077)
  • utils: sort changed categories/groups/audits by most affected (74cb57e)

0.27.0 (2024-03-19)

Bug Fixes

  • package json lock (#562) (c73f3ac)
  • plugin-eslint: eslint startline can be zero (#563) (4eefb35)
  • utils: literal asterisk in Markdown doc should be escaped (6348ba3)
  • utils: use shields.io for colorizing changed values (d0eb475)

Features

  • cli: implement compare command (314e7ba)
  • core: add history logic (#541) (10df94c)
  • core: implement categories, groups and audits comparisons (72d6c14)
  • core: implement compare reports functions (5493cc4)
  • models: create reportsDiff schema (75dc8aa)
  • plugin-js-packages: add runner config integration test, restructure runner (cae4ca8)
  • plugin-js-packages: implement plugin schema and configuration flow (e2ce3f6)
  • plugin-js-packages: implement runner for npm audit (6aa55a2)
  • plugin-js-packages: implement runner for npm outdated (7cb623b)
  • plugin-js-packages: improve output, scoring, error handling (b9f1432)
  • plugin-js-packages: use group per check, audit per dependency group (1405e7d)
  • utils: add helper functions for diffing (4e87cd5)
  • utils: handle unchanged reports diff (0cdcb9e)
  • utils: implement markdown diff formatting (5f453ef)
  • utils: improve diff md formatting - change icon, n/a cells, percentage space (27290f2)
  • utils: improve reports diff formatting (2bee85e)
  • utils: include unchanged and added categories in markdown table (4e53077)
  • utils: sort changed categories/groups/audits by most affected (74cb57e)

0.26.1 (2024-03-07)

0.26.0 (2024-03-06)

Features

  • cli: include commit info in report.json (5965900)

0.25.7 (2024-03-06)

0.25.6 (2024-03-05)

Bug Fixes

  • plugin-eslint: pass arguments via config file instead of argv (dca0266)

0.25.5 (2024-03-05)

0.25.4 (2024-03-05)

0.25.3 (2024-03-05)

0.25.2 (2024-03-05)

0.25.1 (2024-02-29)

0.25.0 (2024-02-29)

Features

  • plugin-lighthouse: implement basic audit parsing (#523) (cbd044e)

0.24.0 (2024-02-29)

Features

  • plugin-lighthouse: add only filters logic for categories (#515) (3cb8fa4)

0.23.4 (2024-02-29)

Bug Fixes

  • utils: sort groups and category refs correctly in report (76a7636)

0.23.3 (2024-02-29)

Bug Fixes

  • stop CLI when a plugin fails (263537c)

0.23.2 (2024-02-28)

0.23.1 (2024-02-27)

0.23.0 (2024-02-26)

Features

0.22.8 (2024-02-23)

Bug Fixes

  • plugin-eslint: handle rules which emit column 0 (de791e1)

0.22.7 (2024-02-21)

0.22.6 (2024-02-21)

0.22.5 (2024-02-21)

0.22.4 (2024-02-20)

0.22.3 (2024-02-19)

Performance Improvements

  • utils: add benchmarks for file system walk and glob libs (#514) (50e5f96)

0.22.2 (2024-02-19)

0.22.1 (2024-02-19)

0.22.0 (2024-02-19)

Features

  • cli: add --tsconfig option (67abfb7)

0.22.0 (2024-02-19)

Features

  • cli: add --tsconfig option (67abfb7)

0.21.1 (2024-02-16)

0.21.0 (2024-02-16)

Features

  • cli: print full report url after upload (0eb7771)

0.20.2 (2024-02-16)

0.20.1 (2024-02-15)

Bug Fixes

  • cli: make onlyPlugins filter based on plugin not audit/group slug (e963c36)

0.20.0 (2024-02-15)

Bug Fixes

  • models: issue file positions must be positive integers (727926e)

Features

  • models: add missing schema exports (36d3eea)

0.19.0 (2024-02-15)

Features

  • core: convert all issue file paths after executing plugin (d82c68d)
  • utils: implement helpers for making paths relative to git root (b12df6d)

0.18.1 (2024-02-14)

0.18.0 (2024-02-14)

Features

  • plugin-coverage: allow passing results as strings (6813021)

0.17.0 (2024-02-13)

Features

  • plugin-coverage: add coverage tool run option, convert to runnerConfig (d259c14)
  • plugin-coverage: get coverage paths using nx (cd499ea)
  • plugin-coverage: provide coverage group (8cddfcd)

0.16.8 (2024-02-12)

0.16.7 (2024-02-09)

Bug Fixes

  • core: upload issue without source if file not linked (2923dbd)

0.16.6 (2024-02-09)

0.16.5 (2024-02-09)

0.16.4 (2024-02-09)

Bug Fixes

  • workflows: update and improve labeler options (146434a)

0.16.3 (2024-02-08)

0.16.2 (2024-02-08)

0.16.1 (2024-02-07)

0.16.0 (2024-02-07)

Features

  • plugin-lighthouse: add onlyAudits logic (#472) (d45eac4)

0.15.0 (2024-02-06)

Features

0.14.4 (2024-02-06)

0.14.3 (2024-02-06)

0.14.2 (2024-02-06)

0.14.1 (2024-02-05)

0.14.0 (2024-02-05)

Features

  • examples-plugins: add lighthouse to examples (#417) (8fcc465)

0.13.2 (2024-02-05)

0.13.1 (2024-02-05)

0.13.0 (2024-02-05)

Bug Fixes

  • plugin-coverage: calculate coverage for no found entities as full coverage (349c772)
  • plugin-coverage: convert new lines on Windows for parse-lcov, update docs (3195da2)

Features

  • plugin-coverage: implement lcov parsing (800e2d0)
  • plugin-coverage: implement plugin configuration (513c518)
  • plugin-coverage: set up plugin-coverage package (8b18a0f)

0.12.10 (2024-02-03)

0.12.9 (2024-02-03)

0.12.8 (2024-02-02)

0.12.7 (2024-02-01)

0.12.6 (2024-02-01)

0.12.5 (2024-02-01)

0.12.4 (2024-02-01)

0.12.3 (2024-02-01)

0.12.2 (2024-01-31)

0.12.1 (2024-01-31)

0.12.0 (2024-01-30)

Features

0.11.2 (2024-01-29)

Bug Fixes

  • core: update portal-client, fixed missing graphql dependency (c16c0c8)

0.11.1 (2024-01-27)

0.11.0 (2024-01-26)

Features

  • cli: add autoloading of the config file (#361) (aef86c9)

0.10.7 (2024-01-26)

0.10.6 (2024-01-26)

0.10.5 (2024-01-26)

Bug Fixes

  • cli: set terminal output to full width (#362) (d6270a5)

0.10.4 (2024-01-25)

0.10.3 (2024-01-25)

0.10.2 (2024-01-25)

0.10.1 (2024-01-24)

0.10.0 (2024-01-24)

Bug Fixes

  • utils: set fixed locale for date in report.md (aa4694b)

Features

  • utils: include timezone in report.md (27d267a)

0.9.0 (2024-01-24)

Features

  • core: add optional upload.timeout to config (fdc3f58)
  • core: update portal-client to version with request timeouts (173bd2f)

0.8.25 (2024-01-19)

0.8.24 (2024-01-19)

0.8.23 (2024-01-18)

0.8.22 (2024-01-16)

0.8.21 (2024-01-16)

0.8.20 (2024-01-16)

0.8.19 (2024-01-16)

0.8.18 (2024-01-15)

0.8.17 (2024-01-15)

0.8.16 (2024-01-15)

0.8.15 (2024-01-15)

0.8.14 (2024-01-12)

0.8.13 (2024-01-12)

0.8.12 (2024-01-12)

0.8.11 (2024-01-12)

Bug Fixes

  • models: fix use case for a group reference but empty audits, clean up tests (d311b95)

0.8.10 (2024-01-12)

0.8.9 (2024-01-11)

0.8.8 (2024-01-11)

Bug Fixes

  • plugin-eslint: truncate long issue messages (c39d0cc)

0.8.7 (2024-01-10)

0.8.6 (2024-01-10)

0.8.5 (2024-01-10)

0.8.4 (2024-01-10)

0.8.3 (2024-01-10)

0.8.2 (2024-01-09)

0.8.1 (2024-01-08)

0.8.0 (2024-01-08)

Features

  • core: add grouping of promise results by status (5f50e8e), closes #287 #287

0.7.0 (2024-01-08)

Features

  • core: improve upload error messages, extend icon set (2251ebd)

0.6.6 (2024-01-05)

0.6.5 (2024-01-04)

0.6.4 (2024-01-04)

0.6.3 (2024-01-04)

0.6.2 (2024-01-04)

0.6.1 (2024-01-03)

Bug Fixes

  • plugin-eslint: fix default Nx lint patterns - directory not valid for "files" in eslintrc (6865800)

0.6.0 (2024-01-03)

Features

  • plugin-eslint: set "passed" displayValue for ESLint audits (40f61a4)

0.5.7 (2024-01-03)

Bug Fixes

  • plugin-eslint: set default lint file patterns for Nx projects (9db19d0)

0.5.6 (2023-12-29)

0.5.5 (2023-12-26)

0.5.4 (2023-12-19)

Bug Fixes

0.5.3 (2023-12-19)

Bug Fixes

0.5.2 (2023-12-19)

0.5.1 (2023-12-18)

0.5.0 (2023-12-17)

Features

  • examples-plugins: add package-json plugin 📦 (#354) (e2f2abe)

0.4.5 (2023-12-15)

0.4.4 (2023-12-15)

0.4.3 (2023-12-14)

0.4.2 (2023-12-12)

Performance Improvements

  • utils: setup microbenchmark for crawlFileSystem (#355) (33d6e25)

0.4.1 (2023-12-12)

0.4.0 (2023-12-11)

Features

  • utils: add sorting of audit issues for report md (b1c5dd7), closes #313 #313

0.3.2 (2023-12-10)

0.3.1 (2023-12-04)

0.3.0 (2023-12-04)

Bug Fixes

  • plugin-eslint: truncate rule texts to pass models validations (a6aac56)

Features

  • utils: add utility function for truncating texts (bdce572)

0.2.0 (2023-12-04)

Bug Fixes

  • plugin-eslint: dynamic import for optional peer dep @nx/devkit (ab62f2f)

Features

  • plugin-eslint: add docs url (d6a6b2a)
  • plugin-eslint: provide Nx helper to combine eslint config from all projects (82fa3e1)
  • plugin-eslint: provide Nx helper to combine eslint configs from project with deps (29cd887)

0.1.1 (2023-12-02)

0.1.0 (2023-12-01)

Bug Fixes

  • cli-e2e: re-create package-lock.json (8a99ec0)
  • cli: changed persist format options to array (#153) (26c6a85), closes #95
  • cli: exclude nested kebab-case keys, update tests (741d5a5)
  • cli: parse multiple config args to last item of array (#164) (7c81f81), closes #146
  • cli: replace clui on @isaacs/cliui (#282) (465f230), closes #209
  • cli: run npm install before tests (6507c2e)
  • core: audit metadata looked up in plugin config, not expected in output (31ffd5e)
  • core: include package.json data (0fef0c3)
  • formatting (7e5e743)
  • lint config and errors (6f5f677)
  • models: add package.lock (8075613)
  • models: allow empty string as docsUrl (1c34d92)
  • models: increase character limit for issue message (e6f6fc8)
  • plugin-eslint: allow unmatched patterns (d350187)
  • plugin-eslint: ensure runner output directory exists (fca87f5)
  • plugin-eslint: ensure working directory exists before writing .eslintrc.json (3f19d6f)
  • plugin-eslint: exclude rules which are turned off (f2cc454)
  • plugin-eslint: handle implicitly relative config paths (39a7d43)
  • plugin-eslint: omit empty docsUrl in audit metadata (3127683)
  • plugin-eslint: pluralize audit display value based on count (aa35d0c)
  • refactor after core package intro (#83) (aa39d09)
  • sync package-lock.json with npm install (0fde5f3)
  • testing: fix tests for Windows (#165) (b80255b), closes #131
  • utils,cli: remove all mentions of the interactive option (#245) (be7471e), closes #120
  • utils: handle descriptions ending in code block in report.md (a9a05ad)

Features

  • add transform to persist config (#229) (ce4d975)
  • cli: add --persist.filename cli option (#187) (296df7d)
  • cli: disabled version option (#162) (9a5371c), closes #124
  • cli: initial collect command (#45) (ba048be)
  • cli: introduce the onlyPlugins option (#246) (13c9d26), closes #119
  • cli: persist login and formatting options (#47) (6241fd7)
  • cli: setup yargs for cli (#42) (37ea0a5), closes #6 #38
  • cli: use bundle-require instead of jiti (no hackfix, but also no CJS configs) (028c592)
  • configure build and tests to handle ESM and CJS configs (48cd967)
  • core: add core package (dd8ddae)
  • core: add esm plugin logic (#248) (18d4e3a)
  • core: change to execute all plugins before throwing on failed (#275) (32a6ef5), closes #159
  • models: add isBinary field to category schema (8b13039)
  • models: add report filename option (#174) (bdeab54)
  • models: setup types and parser with zod (7d5c99e)
  • models: validate plugin icons using portal-client package (f52cc75)
  • nx-plugin: add configuration generator (#294) (ee21143), closes #61
  • nx-plugin: initial setup and init command (#51) (c8dd4d9), closes #9
  • plugin-eslint: add support for inline eslint config (67571eb)
  • plugin-eslint: configure bin entry point (b34ecb2)
  • plugin-eslint: convert rule ids to slugs, add basic description to audits (971c97a)
  • plugin-eslint: create groups from rules' meta.docs.category (per plugin) (56e129c)
  • plugin-eslint: create groups from rules' meta.type (problem/suggestion/layout) (0350e49)
  • plugin-eslint: implement runner logic (0ad5445)
  • plugin-eslint: include NPM package name and version (25bda11)
  • plugin-eslint: register audit metadata based on eslintrc and file patterns (3aac581)
  • plugin-eslint: rule options used to identify audit, options in slug (hash) and description (b9f51c9)
  • plugin-eslint: validate initializer params with Zod (56e1aee)
  • support top-level await in config files (7712250)
  • support TS config files using Jiti + hackfix lighthouse import.meta usages (3b7927d)
  • utils: add audits sorting for reports (#302) (10ee12e), closes #210
  • utils: add command line args helper (#52) (9d6acec), closes #43
  • utils: add file size logging (#65) (c46046f), closes #59
  • utils: add file-system helper (#336) (001498b)
  • utils: add package utils for cli independent logic (#39) (dacaaf7), closes #32
  • utils: add scoring logic (#133) (89fecbb)
  • utils: add upload logic (#66) (3e88ffc), closes #21 #57 #85
  • utils: implement a new design for stdout (#206) (84b8c28), closes #190
  • utils: implement report.md formatting (#196) (346596d), closes #148
  • utils: implement verbose helper logic (#121) (112ebe7)
  • utils: move parts from utils into core (#81) (dd0a180), closes #78
  • utils: update git latest commit functionality (#205) (7ec4582), closes #192

Performance Improvements

  • utils: add benchmark logic and example (#137) (142943e)
  • utils: improve the performance of scoring and reporting (#212) (41d7c0b), closes #132