@code-pushup/eslint-plugin

中文文档
0.126.4发布于 2026/09/11MITTypeScriptES Module构建来源已验证近 30 天下载 3974

使用 ESLint.%%% 检测源代码问题的代码 PushUp 插件

中文使用文档
文档目录9 节
  1. 开始
  2. 自定义组
  3. 可选设置的类别
  4. 人工生成和装入
  5. 基本文物配置
  6. 多个文物文件
  7. 生成自定义命令的文物
  8. Nx Monorepo 设置
  9. 缓存文物生成

@ code- pushup/ eslint- plugin

npm downloads dependencies

🕵️ 使用ESLint检测源代码中问题的代码PushUp插件. 📋


插件解析您的 ESLint 配置和 lints 目标文件 ESLint的节点.js API。 。 。 .

检测到的ESLint规则被映射到代码PushUp审计中. 审计报告按以下方式计算:

  • 分数是二进制"通过"或"失败" - 如果找不到错误或警告,则1,否则0
  • 值等于所有错误和警告的总和
  • 个别错误和警告按审计细节中的问题列出

开始

  1. 如果还没有安装 @ code- pushup/ cli (英语) 并创建配置文件.

  2. 用您的软件包管理器安装为 dev 依赖 :

    npm install --save-dev @code-pushup/eslint-plugin
    
    yarn add --dev @code-pushup/eslint-plugin
    
    pnpm add --save-dev @code-pushup/eslint-plugin
    
  3. 准备 ESLint 配置文件 有规矩,你有兴趣衡量.

    记住代码PushUp只收集和上传结果,如果发现出错,它不会失败. 因此,你可以比大多数的linter设置更严格, 想法是设定愿望目标 跟踪你的进展.

    我们建议扩大我们自己 @code-pushup/eslint-config。 。 。

  4. 将此插件添加到 plugins 在代码 PushUp CLI 配置文件中的数组(例如 . code-pushup.config.js) (中文(简体) ).

    最简单的配置使用默认设置并提示当前目录:

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

    您可以选择为目标文件指定一个自定义的 ESLint 配置文件和/或 glob 模式( 相对于 process.cwd():

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

    如果您正在使用一个 Nx 单列波, 将会提供额外的帮助功能来简化您的配置 :

    • 如果您希望将您工作空间中的所有项目合并为一个报告, 请使用 eslintConfigFromAllNxProjects 帮助者 :

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

      如果需要,您也可通过将特定项目的名称输入 exclude 选项 :

      await eslintConfigFromAllNxProjects({ exclude: ['server'] });
      
    • 如果您希望将特定项目和其他项目一起作为目标,请使用 eslintConfigFromNxProjectAndDeps 帮助并用您的工程名称传递 :

      import eslintPlugin, { eslintConfigFromNxProjectAndDeps } from '@code-pushup/eslint-plugin';
      
      export default {
        plugins: [
          // ...
          await eslintPlugin(await eslintConfigFromNxProjectAndDeps('<PROJECT-NAME>')),
        ],
      };
      
  5. 用 CLI 运行 CLI npx code-pushup collect 并查看或上传报告(参见 CLI 文档) (中文(简体) ).

自定义组

您可以用自定义组扩展插件配置,以便根据项目的具体需要对ESLint规则进行分类. 自定义组允许您指定单个规则的权重,从而影响其对报告的影响. 规则可以被定义为有明确权重的物体,也可以被定义为每个规则默认为1权重的数组. 此外,您还可以使用通配符图案(*)包含多个前缀相近的规则.

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

export default {
  // ...
  plugins: [
    // ...
    await eslintPlugin(
      { eslintrc: 'eslint.config.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-*'],
          },
        ],
      },
    ),
  ],
};

可选设置的类别

  1. 您希望列入自定义类别(使用)的参考审计(或一组) npx code-pushup print-config 以列出审计和组别.

    根据每个ESLint规则在总的类分上应该有什么影响来分配权重(将权重0分配到只包括作为额外信息,而不影响类分). 注意分类可以结合多个插件.

    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,
            },
            // ...
          ],
        },
        // ...
      ],
    };
    

    个别审计的参考性提供了大量的颗粒性,但当有高额的林特规则时可能很难维持这样的配置. 一个比较简单的方法就是同时使用分组来参考许多相关的审计. 例如,你可以区分那些宣布了一种类型的规则 problem, (中文(简体) ), suggestion,或 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. 用 CLI 运行 CLI npx code-pushup collect 并查看或上传报告(参见 CLI 文档) (中文(简体) ).

人工生成和装入

除了从插件执行中运行ESLint,还可以配置插件来消耗预先生成的ESLint报告(artifacts). 这对于:

  • CI/CD管道: 使用构建系统的缓存结果
  • Monorepo 设置: 多个项目或目标的总结果
  • 业绩优化: 当报告已经可用时跳过 ESLint 执行
  • 自定义工作流程: 与现有林地基础设施相融合

文物特性支持装入符合标准的 ESLint JSON 报告 ESLint.LintResult[] 格式.

基本文物配置

指定您 ESLint JSON 在文物选项中报告文件的路径 。 如果您不需要自定义图案, 请通过一个空对象作为第一个参数 :

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

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

多个文物文件

使用 glob 模式来汇总多个文件的结果 :

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

生成自定义命令的文物

如果在装入前需要生成文物,请使用 generateArtifactsCommand 选项 :

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

您也可以用参数指定命令 :

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 设置

缓存文物生成

为了利用Nx的缓存能力,需要生成用于缓存的JSON文物,同时仍然可以在终端或CI日志中看到ESLint的侵犯,从而可以修复. 这可以通过利用 Eslint 物质来实现.

从 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\"}"
      }
    }
  }
}

你现在可以生成 eslint-report.json 从缓存开始,您的插件配置可以直接消耗它们.

nx.json的密码推出.config.ts目标

{
  "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",
    },
  },
}

和项目配置杠杆 dependsOn 以确保在运行代码推出时生成这些手工艺品.

 code-pushup.config.ts 然后可以配置以消耗被缓存的文物 :

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

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

找到更多的细节 在我们 Nx 设置指南。 。 。 .

版本与发布记录

@code-pushup/eslint-plugin 共发布 256 个版本,首次发布于 2023/12/01;过去 12 个月发布了 62 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.126.4latest2026/09/111 个月前
0.126.32026/05/195 个月前
0.126.22026/03/317 个月前
0.126.12026/03/317 个月前
0.126.02026/03/307 个月前
0.125.02026/03/277 个月前

关于 @code-pushup/eslint-plugin 的常见问题

@code-pushup/eslint-plugin 是什么?

使用 ESLint.%%% 检测源代码问题的代码 PushUp 插件

如何安装 @code-pushup/eslint-plugin?

在项目目录运行 npm install @code-pushup/eslint-plugin,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:eslint(^8.46.0 || ^9.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@code-pushup/eslint-plugin 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@code-pushup/eslint-plugin 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@code-pushup/eslint-plugin 可以商用吗?

@code-pushup/eslint-plugin 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@code-pushup/eslint-plugin 的下载量有多少?

根据 npm 官方下载统计,@code-pushup/eslint-plugin 在 2026/10/10 – 2026/11/08 这 30 天内被下载 3,974 次,日均约 132 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@code-pushup/eslint-plugin 还在维护吗?

最新版本 0.126.4 发布于 2026/09/11(1 个月前);至今共发布 256 个版本,其中过去 12 个月发布了 62 个;首次发布于 2023/12/01。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。