# @code-pushup/eslint-plugin 中文文档

规范地址：https://npmcn.com/package/%40code-pushup/eslint-plugin/

版本：0\.126\.4
npm 元数据更新时间：2026-09-11T10:12:56.051Z
中文译文更新时间：2026-11-10T06:15:41.914Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40code-pushup/eslint-plugin
原文对照：https://npmcn.com/package/%40code-pushup/eslint-plugin/?lang=original
项目主页：https://github.com/code-pushup/cli/tree/main/packages/plugin-eslint#readme
源码仓库：https://github.com/code-pushup/cli

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：117 kB，98 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：5 个
- peer 依赖：eslint ^8\.46\.0 \|\| ^9\.0\.0，@nx/devkit \>=17\.0\.0
- 首次发布：2023-12-01T08:35:23.534Z
- 最新版本发布：2026-09-11T10:12:55.638Z
- 近 30 天下载量：3974（2026-10-10 至 2026-11-08，npm 官方下载统计）
- 已发布版本数：256（近 12 个月 62 个）

## 中文简介

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

## 安装

```sh
npm install @code-pushup/eslint-plugin
```

也可以使用：`pnpm add @code-pushup/eslint-plugin`、`yarn add @code-pushup/eslint-plugin`、`bun add @code-pushup/eslint-plugin`

## README

# @ code- pushup/ eslint- plugin

[![npm](https://img.shields.io/npm/v/%40code-pushup%2Feslint-plugin.svg)](https://www.npmjs.com/package/@code-pushup/eslint-plugin) [![downloads](https://img.shields.io/npm/dm/%40code-pushup%2Feslint-plugin)](https://npmtrends.com/@code-pushup/eslint-plugin) [![dependencies](https://img.shields.io/librariesio/release/npm/%40code-pushup/eslint-plugin)](https://www.npmjs.com/package/@code-pushup/eslint-plugin?activeTab=dependencies)

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

* * *

插件解析您的 ESLint 配置和 lints 目标文件 [ESLint的节点.js API](https://eslint.org/docs/latest/integrate/nodejs-api)。 。 。 .

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

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

## 开始

1.  如果还没有安装 [@ code- pushup/ cli (英语)](https://npmcn.com/package/%40code-pushup/cli/README.md) 并创建配置文件.
    
2.  用您的软件包管理器安装为 dev 依赖 :
    
    ```sh
    npm install --save-dev @code-pushup/eslint-plugin
    ```
    
    ```sh
    yarn add --dev @code-pushup/eslint-plugin
    ```
    
    ```sh
    pnpm add --save-dev @code-pushup/eslint-plugin
    ```
    
3.  准备 [ESLint 配置文件](https://eslint.org/docs/latest/use/configure/configuration-files) 有规矩,你有兴趣衡量.
    
    记住代码PushUp只收集和上传结果,如果发现出错,它不会失败. 因此,你可以比大多数的linter设置更严格, 想法是设定愿望目标 跟踪你的进展.
    
    > 我们建议扩大我们自己 [`@code-pushup/eslint-config`](https://www.npmjs.com/package/@code-pushup/eslint-config)。 。 。
    
4.  将此插件添加到 `plugins` 在代码 PushUp CLI 配置文件中的数组(例如 . `code-pushup.config.js`) (中文(简体) ).
    
    最简单的配置使用默认设置并提示当前目录:
    
    ```js
    import eslintPlugin from '@code-pushup/eslint-plugin';
    
    export default {
      // ...
      plugins: [
        // ...
        await eslintPlugin(),
      ],
    };
    ```
    
    您可以选择为目标文件指定一个自定义的 ESLint 配置文件和/或 glob 模式( 相对于 `process.cwd()`:
    
    ```js
    import eslintPlugin from '@code-pushup/eslint-plugin';
    
    export default {
      // ...
      plugins: [
        // ...
        await eslintPlugin({ eslintrc: './eslint.config.js', patterns: ['src/**/*.js'] }),
      ],
    };
    ```
    
    如果您正在使用一个 Nx 单列波, 将会提供额外的帮助功能来简化您的配置 :
    
    -   如果您希望将您工作空间中的所有项目合并为一个报告, 请使用 `eslintConfigFromAllNxProjects` 帮助者 :
        
        ```js
        import eslintPlugin, { eslintConfigFromAllNxProjects } from '@code-pushup/eslint-plugin';
        
        export default {
          plugins: [
            // ...
            await eslintPlugin(await eslintConfigFromAllNxProjects()),
          ],
        };
        ```
        
        如果需要,您也可通过将特定项目的名称输入 `exclude` 选项 :
        
        ```js
        await eslintConfigFromAllNxProjects({ exclude: ['server'] });
        ```
        
    -   如果您希望将特定项目和其他项目一起作为目标,请使用 `eslintConfigFromNxProjectAndDeps` 帮助并用您的工程名称传递 :
        
        ```js
        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 文档](https://npmcn.com/package/%40code-pushup/cli/README.md)) (中文(简体) ).
    

### 自定义组

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

```js
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分配到只包括作为额外信息,而不影响类分). 注意分类可以结合多个插件.
    
    ```js
    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`数字 :
    
    ```js
    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 文档](https://npmcn.com/package/%40code-pushup/cli/README.md)) (中文(简体) ).
    

## 人工生成和装入

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

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

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

### 基本文物配置

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

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

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

### 多个文物文件

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

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

### 生成自定义命令的文物

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

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

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

```js
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 插入目标_

```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目标_

```jsonc
{
  "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` 然后可以配置以消耗被缓存的文物 :

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

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

* * *

找到更多的细节 在我们 [Nx 设置指南](https://github.com/code-pushup/cli/wiki/Code-PushUp-integration-guide-for-Nx-monorepos#eslint-config)。 。 。 .

## 常见问题

### @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 和提交记录判断。

