@code-pushup/ci

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

代码 PushUp 的 CI 自动化逻辑( 提供者- 不可识别)

中文使用文档
文档目录14 节
  1. 设置
  2. 使用量
  3. 参数
  4. 基调
  5. API 客户端
  6. 选项
  7. 独立模式
  8. 独立结果
  9. Monorepo 模式
  10. 并行任务
  11. 单收结果
  12. 高级用途
  13. 更快的 CI 运行方式 configPatterns
  14. 上份报告的最新搜索承诺

@ code- pushup/ ci (英语)

npm downloads dependencies

🔎🔬 您的软件项目的质量衡量标准 . 📉🔍

  1. ⚙️ 配置您想要使用您最喜欢的工具来跟踪的东西 .
  2. 🤖 把它融入你的线人.
  3. 🌈 在漂亮的仪表板上看到报告.

此套件导出 在 CI 管道中运行代码 PushUp 的提供者不可知核心逻辑它作为下列供应商一体化的基础:

GitHub 动作code-pushup/github-action
GitLab CI/光盘code-pushup/gitlab-pipelines-template

设置

npm install @code-pushup/ci
yarn add @code-pushup/ci
pnpm add @code-pushup/ci

使用量

这个 runInCI 函数执行完整的 CI 流 :

import { runInCI } from '@code-pushup/ci';

const result = await runInCI(
  {
    /* Git refs */
  },
  {
    /* Provider API client */
  },
  {
    /* Options */
  },
);

参数

基调

对于每次CI跑步,你都必须通过承诺SHA和Git ref(例如:. main被推开的东西. 这些值可以从 CI 环境中检测出,细节取决于使用哪个提供者.

如果 head 提供,然后代码 PushUp 将收集新报告,并可选地将其上传到门户网站(取决于您的代码 PushUp 配置). 如果被拉动请求所触发,请指定 base 报告也一样. 这将进一步比较来源和目标部门的报告,并向公关发布评论.

财产需求类型说明
head对string | { ref: string, sha: string }当前分支/承诺
base没有string | { ref: string, sha: string }公关目标部门

API 客户端

PR流量需要与 Git 提供者的 API 互动发布比较注释. 将这些请求包成函数,并作为配置提供者的对象传送.

财产需求类型说明
createComment对(body: string) => Promise<Comment>向 PR 发布新评论
updateComment对(id: number, body: string) => Promise<Comment>更新已有的 PR 注释
listComments对() => Promise<Comment[]>从 PR 获取全部批注
maxCommentChars对number注释机构的字符限制
downloadReportArtifact没有(project?: string) => Promise<string | null>获取上一个( 根/ 项目) report.json 用于基分支和返回路径,用作缓存以加快比较

A 类 Comment 对象具有下列所需的属性:

财产类型说明
idnumber注释编号
bodystring作为 Markdown 字符串的评论内容
urlstring在 PR 中注释的网页链接

选项

可选的,您可以覆盖默认选项以进一步定制 :

财产类型默认说明
monorepoboolean | MonorepoToolfalse启用 单相模式
parallelboolean | numberfalse启用并行执行 单相模式
projectsstring[] | nullnull自定义工程配置 单相模式
taskstring'code-pushup'每个工程运行代码的指令名称 单相模式
nxProjectsFilterstring | string[]'--with-target={task}'传递到 nx show projects中,仅与 Nx 相关 单相模式 [^2]
directorystringprocess.cwd()代码 PushUp CLI 运行目录
configstring | nullnull [^1]配置文件的路径( E)--config 选项)
silentbooleanfalse从 CLI 命令中隐藏日志( 错误将被打印)
binstring'npx --no-install code-pushup'执行代码 PushUp CLI 的命令
detectNewIssuesbooleantrue如果发现新问题并返回到 newIssues 属性
skipCommentbooleanfalse如果将比较注释发布到 PR 中, 则切换
configPatternsConfigPatterns | nullnull启用的其他配置 更快的 CI 运行
searchCommitsboolean | numberfalse如果基地分支在门户中没有缓存报告, 将搜索扩展至最近100项
jobIdstring | number | nullnull区别 PR 注释( 如果多个任务运行代码 PushUp )

[^1]:默认 code-pushup.config 文件已自动检测到, 如描述的那样 @code-pushup/cli 文档。 。 。 .

[^2]: {task} 模式替换为 task 值,所以默认行为是使用 npx nx show projects --with-target=code-pushup --json编辑 nxProjectsFilter 选项使Nx用户能够灵活地以Nx CLI支持的替代方式过滤项目(例如. --affected, (中文(简体) ), --projects, (中文(简体) ), --exclude, (中文(简体) ), --type- 参考 nx 文档中的选项 详细情况.

独立模式

默认情况下,假设代码PushUp的设置是为了在全repo上运行一个命令(独立模式) (中文(简体) ). 如果您要在多个工程上单独运行代码 PushUp, 您应该启用 单相模式。 。 。 .

独立结果

在独立模式下,解析对象会包括报告文件的路径(JSON和Markdown格式),以及diff文件,注释ID和公关比较时的新问题.

const result = await runInCI(refs, api);

if (result.mode === 'standalone') {
  const {
    // output files, can be uploaded as job artifact
    files: { current, comparison },
    // ID of created/updated PR comment
    commentId,
    // array of source code issues, can be used to annotate changed files in PR
    newIssues,
  } = result;
}

Monorepo 模式

对于单重置设置,可以收集并比较代码 PushUp 报告 每个项目。 将所有项目比较合并为 单公关评论.

使用 monorepo 选项以激活单曲模式 :

await runInCI(refs, api, {
  monorepo: true,
});

这个 runInCI 函数将尝试从文件系统中检测您正在使用的哪一个单列波工具 . 框外支持以下工具:

如果使用其中一个工具,也可以通过设置跳过自动检测 monorepo 选项到 'nx', (中文(简体) ), 'turbo', (中文(简体) ), 'yarn', (中文(简体) ), 'pnpm' 或者说 'npm'。 。 。 .

如果没有检测到这些工具,那么后退就是运行代码 PushUp in 包含所有文件夹 package.json 文档。 如果这不是你想要的,那么 您也可以使用 projects 选项( 支持 globs ):

await runInCI(refs, api, {
  monorepo: true,
  projects: ['frontend', 'backend/*'],
});

基于使用 monrepo 工具, 代码 PushUp CLI 命令将被执行 使用一个 package.json 脚本、 Nx 目标、 Turbo 任务或二进制可执行文件( 如 倒计时). 默认情况下,它们将被调用 code-pushup不过你 能够使用 task 选项 :

await runInCI(refs, api, {
  monorepo: 'nx',
  task: 'analyze', // custom Nx target
});

并行任务

默认情况下,单列波中每个项目的任务按顺序运行. 这个 parallel 选项允许支持它的工具(Nx、Turborepo、PNPM、Yarn 2+)并行执行.

await runInCI(refs, api, {
  monorepo: true,
  parallel: true,
});

最多同时进行的任务数可以通过一个数字而不是布尔来设定 :

await runInCI(refs, api, {
  monorepo: true,
  parallel: 3,
});

单收结果

在单雷波模式下,已解析对象包括顶层被合并的diff,以及项目列表. 每个项目都有自己的报告文件和问题.

const result = await runInCI(refs, api);

if (result.mode === 'monorepo') {
  const {
    // array of objects with result for each project
    projects,
    // ID of created/updated PR comment
    commentId,
    // merged report-diff.md used in PR comment, can also be uploaded as job artifact
    files: { comparison },
  } = result;

  for (const project of projects) {
    const {
      // detected project name (from package.json, project.json or folder name)
      name,
      // output files, can be uploaded as job artifacts
      files: { current, comparison },
      // array of source code issues, can be used to annotate changed files in PR
      newIssues,
    } = project;
  }
}

高级用途

更快的 CI 运行方式 configPatterns

默认情况下 print-config 命令按顺序运行,以可靠地检测 code-pushup 配置 - 具体地说, 从何处读取输出文件( e)persist 配置)以及门户是否可以用作缓存(upload conf. 这样可以让每个项目都以自己的方式配置,而不会打破任何东西,但是可以让大块单放这些额外的 code-pushup print-config 处决可以累积并大大地减缓CI程序.

作为一个更可扩展的替代品, configPatterns 可以提供。 用户提前声明每个工程的配置方式, 允许 print-config 被跳过。 用户有责任确保每个项目都持有这种配置(不会被检查). 这个 configPatterns 支持字符串插入, 替换 {projectName} 与每个项目的(已粘结)名称相连接。 除此之外,每个项目 code-pushup.config 一定是完全一样 persist 财务报告和审定财务报表 upload 配置.

await runInCI(refs, api, {
  monorepo: true,
  configPatterns: {
    persist: {
      outputDir: '.code-pushup/{projectName}',
      filename: 'report',
      format: ['json', 'md'],
    },
    // optional: will use portal as cache when comparing reports in PRs
    upload: {
      server: 'https://api.code-pushup.example.com/graphql',
      apiKey: 'cp_...',
      organization: 'example',
      project: '{projectName}',
    },
  },
});

上份报告的最新搜索承诺

在比较报告时,可以缓存基础分支的报告. 如果一个项目有一个 upload 配置,然后询问端口 API 是否匹配此承诺的报告 。 如果未上载此类报告,则在CI文物中查阅该报告(由 downloadReportArtifact 内 ProviderApiClient) (中文(简体) ). 如无报告可查,则取出基分所并收取上报.

在某些情况下,可能没有关于主要部门最新承诺的报告,但最近其他一些承诺可能有一个有用的报告,例如如果 nxProjectsFilter 用于 --affected 旗帜。 在这种情况下 searchCommits 选项可以启用。 然后将检查主要分支最近承付的有限数目.

await runInCI(refs, api, {
  monorepo: 'nx',
  nxProjectsFilter: '--with-target=code-pushup --affected',
  // checks 10 most recent commits by default
  searchCommits: true,
  // optionally, number of searched commits may be extended up to 100
  // searchCommits: 30
});

版本与发布记录

@code-pushup/ci 共发布 119 个版本,首次发布于 2024/10/16;过去 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/ci 的常见问题

@code-pushup/ci 是什么?

代码 PushUp 的 CI 自动化逻辑( 提供者- 不可识别)

如何安装 @code-pushup/ci?

在项目目录运行 npm install @code-pushup/ci,或使用 pnpm add / yarn add / bun add。

@code-pushup/ci 支持 TypeScript 吗?

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

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

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

@code-pushup/ci 可以商用吗?

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

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

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

@code-pushup/ci 还在维护吗?

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