# commit-stream 中文文档

规范地址：https://npmcn.com/package/commit-stream/

版本：3\.0\.2
npm 元数据更新时间：2026-11-03T08:30:44.973Z
中文译文更新时间：2026-11-03T08:51:18.592Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/commit-stream
原文对照：https://npmcn.com/package/commit-stream/?lang=original
项目主页：https://github.com/nodejs/commit-stream
源码仓库：https://github.com/nodejs/commit-stream

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

- 包体积（解压后）：34.9 kB，11 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：0 个
- 首次发布：2015-07-22T03:49:58.268Z
- 最新版本发布：2026-11-03T08:30:44.655Z
- 已发布版本数：19（近 12 个月 10 个）

## 中文简介

把一个 `git log` 转换成提交对象流

## 安装

```sh
npm install commit-stream
```

也可以使用：`pnpm add commit-stream`、`yarn add commit-stream`、`bun add commit-stream`

## README

# commit-stream

**把一个 `git log` 转换成提交对象流**

[![NPM](https://nodei.co/npm/commit-stream.svg?style=flat&data=n,v&color=blue)](https://nodei.co/npm/commit-stream/)

## API

**`commitStream([defaultGithubUser, defaultGithubProject])`**

返回一个对象流，您可以从的输出中通过管道生成换行流 `git log` 出现。流的输出是一系列对象，每个对象表示来自日志的提交。

旨在用于标准日志格式（而不是使用简化日志格式之一的简化日志格式） `--format` 选项)，但它也会处理更改统计，如果你 `git log --stat`。

典型的用法:

```js
import { spawn } from 'node:child_process'
import { createInterface } from 'node:readline'
import { pipeline } from 'node:stream/promises'
import commitStream from 'commit-stream'

const { stdout } = spawn('git', ['log'])
const commits = []

await pipeline(
  createInterface({ input: stdout, crlfDelay: Infinity }), // break up by newline characters
  commitStream('rvagg', 'commit-stream'),
  async (source) => {
    for await (const commit of source) commits.push(commit)
  }
)
// commits is an array of objects
```

提交对象属性：

-   `sha`：完整提交sha
-   `author`：一个对象，表示提交的作者
    -   `name`：提交者的名称
    -   `email`：提交者的电子邮件
-   `authors`：表示提交的作者的对象列表，支持多个作者通过 `Co-authored-by:`
-   `authorDate`：一个字符串，表示作者原始提交的日期（永远不会更改）
-   `commitDate`：表示最后一次提交更改的日期的字符串
-   `summary`：提交的一行摘要
-   `description`：摘要的自由格式文本内容，减去特定的元数据行
-   `reviewers`：包含对象的数组 `name` 和 `email` 属性中包含审阅者 `Reviewed-By: Foo Bar <baz@boom>` 格式。
-   `changes`:如果 `--stat` 数据包含在git日志中，一个包含变更统计的对象：
    -   `files`：修改的文件数
    -   `insertions`：插入的新行数
    -   `deletions`：删除的旧行数
-   `prUrl`：如果提交元数据包含一个，则指向拉取请求的URL `PR-URL: https://github.com/user/project/pull/XX` 线。注意，无论进行什么 `PR-URL:` 字符串将在此属性中收集；一个例外是如果缩短 `#XX` 找到您提供的版本 `defaultGitHubUser` 和 `defaultGitHubProject` 参数，然后一个完整的GitHub拉取请求将在其位置重新构建。
-   `ghUser`， `ghProject`， `ghIssue`：如果找到合适的GitHub拉取请求 `prUrl` 财产（包括缩短的） `#XX` 这些属性将被添加到指向此更改的原始用户、项目和发出（pull-request），就像从URL中提取的那样。此外，如果提交消息行以 `(#XX)` 与绿色按钮合并一样，将使用此选项。

## 许可证

**commit-stream** 版权所有(c) 2015 Rod Vagg [@rvagg](https://twitter.com/rvagg) 并获得麻省理工学院的许可。保留MIT许可中未明确授予的所有权利。请参阅所包含的许可证。Md文件获取更多详细信息。

## 常见问题

### commit-stream 是什么？

把一个 git log 转换成提交对象流

### 如何安装 commit-stream？

在项目目录运行 npm install commit-stream，或使用 pnpm add / yarn add / bun add。

### commit-stream 支持 TypeScript 吗？

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

### commit-stream 支持 ESM 还是 CommonJS？

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

### commit-stream 可以商用吗？

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

### commit-stream 还在维护吗？

最新版本 3\.0\.2 发布于 2026/11/03（今天）；至今共发布 19 个版本，其中过去 12 个月发布了 10 个；首次发布于 2015/07/22。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

