
开发工具CLI文档【免费下载链接】conventional-changelogGenerate changelogs and release notes from a projects commit messages and metadata.项目地址https://gitcode.com/gh_mirrors/co/conventional-changelog点击查看免费下载standard-changelog是 conventional-changelog 仓库中一个开箱即用的封装它在核心生成器conventional-changelog的基础上预置了 Angular 提交规范conventional-changelog-angular preset无需再安装或选择任何 preset即可从 git 提交历史生成按 Features / Bug Fixes / Performance Improvements / Breaking Changes 分组的CHANGELOG.md。读完本文你将掌握它的 CLI 全量参数、JS API 用法、默认行为背后的源码实现以及如何把它接入真实项目含 monorepo 场景。定位它和 conventional-changelog 到底差在哪根据 READMEstandard-changelog是 An opinionated approach to CHANGELOG generation using angular commit conventions基于 Angular 提交规范的、有主见的 CHANGELOG 生成方式。两者的关系可以直接从源码看到// packages/standard-changelog/src/index.ts import { ConventionalChangelog } from conventional-changelog import angular from conventional-changelog-angular export * from conventional-changelog export class StandardChangelog extends ConventionalChangelog { constructor(cwdOrGitClient: string | ConventionalGitClient) { super(cwdOrGitClient) this.config(angular()) } }在 StandardChangelog 类 中构造函数做且仅做一件事把angular()生成的 preset 配置注入基类ConventionalChangelog。这意味着它与conventional-changelog的唯一差异就是没有 preset 需要安装或选择——你只需按 Angular 规范写提交信息工具负责拼装发布说明。Angular preset 本身的结构见 preset 入口export default function createPreset(config) { return { commits: { ignore: config?.ignoreCommits, merges: false // 不纳入 merge 提交 }, parser: createParserOpts(), // 解析提交信息的规则 writer: createWriterOpts(), // 渲染 CHANGELOG 的模板规则 whatBump // 版本升级建议逻辑 } }其中merges: false意味着 merge 提交不会进入 changelogparser决定哪些 type 会被分组展示feature / fix / perf / breaking change 等writer决定分组标题、链接和排序——这正是 README 中匹配 Feature、Fix、Performance Improvement 或 Breaking Changes 模式的提交这一行为的来源。安装与环境要求README 给出的安装方式# pnpm pnpm add standard-changelog # yarn yarn add standard-changelog # npm npm i standard-changelog从 package.json 可以确认几个硬性前提项目值说明模块格式type: moduleESM-onlyREADME 顶部的 ESM-only 徽标即源于此Node 版本engines: { node: 22 }要求 Node.js ≥ 22CLI 入口bin.standard-changelog→./dist/cli.js安装后即可直接使用standard-changelog命令运行时依赖conventional-changelog/git-client、conventional-changelog-angular、conventional-changelog均为 workspace 依赖说明其能力完全构建在同仓库的兄弟包之上CLI 用法与默认行为最简单的调用README 原样示例standard-changelog默认行为读取自上一个 semver tag 以来的提交把符合 Angular 规范的提交分组渲染后把新版本区块追加到CHANGELOG.md文件顶部版本号取自package.json的version字段。对应仓库文档站给出的输出形态如下当package.json含repository字段时版本号和 commit hash 会渲染成 git 托管平台的链接否则为纯文本短 hash# [1.2.0](https://github.com/acme/app/compare/v1.1.0...v1.2.0) (2026-07-01) ### Features * **api:** add async write() generator ([0f7e2c1](https://github.com/acme/app/commit/0f7e2c1a9d3e4b5c6f7089abcdef0123456789ab)) ### Bug Fixes * **cli:** resolve config path relative to cwd ([a3b9d84](https://github.com/acme/app/commit/a3b9d8472e1f0c9b8a7d6e5f4c3b2a1908f7e6d5)) ### Performance Improvements * **parser:** cache compiled header regex ([c1d2e3f](https://github.com/acme/app/commit/c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0))这种版本标题 分组小节 scope 加粗 短 hash 链接的结构来自 Angular preset 的 writer 模板headerPartial 负责渲染# 版本 (日期)标题commitPartial 负责渲染每条提交的**scope:** subject (短hash)并自动处理 issue/PR 引用如(#123)的链接化。CLI 全量参数表README 提示standard-changelog --help可列出全部参数。以下内容与 CLI 源码中的 HELP 文本 完全一致参数默认值说明-i, --infileCHANGELOG.md从该文件读取已有 CHANGELOG-o, --outfile同--infile将结果写入该文件--stdout—将结果输出到标准输出而不写文件-p, --presetangular覆盖内置的 Angular preset改用其他 preset-k, --pkg最近的package.json指定读取 version / repository 的package.json路径-a, --appendfalse将新 release 追加到旧 release下方默认为插入到上方-f, --first-release—首次生成 CHANGELOG等价于--release-count 0-r, --release-count1从最新往前生成几个 release0表示重新生成整个历史并覆盖输出文件--skip-unstable—跳过不稳定 tag如x.x.x-alpha.1、x.x.x-rc.2-u, --output-unreleased—输出尚未发布的提交Unreleased 区块-v, --verbosefalse输出调试信息-n, --config—指向返回 preset 选项的配置脚本路径-c, --context—指向定义模板变量的 JSON 文件-l, --lerna-package—为指定 Lerna 包生成 changelog读:pkg-name1.0.0形式的 tag-t, --tag-prefix—读取 tag 时使用的 tag 前缀--commit-path—只统计触及指定目录的提交monorepo 按目录隔离--from上一个 semver tag提交范围起点tag 或 SHA--toHEAD提交范围终点tag 或 SHA几个高频场景与文档站 CLI 页面 的示例一致# 预览而不落盘 standard-changelog --stdout # 首次采用从完整历史重建 CHANGELOG覆盖输出文件 standard-changelog -r 0 # 等价于 standard-changelog -f # 只生成最近 2 个 release standard-changelog -r 2 --stdout # 限定提交范围 standard-changelog --from v1.0.0 --to v1.1.0 --stdout # monorepo按 tag 前缀 目录隔离 standard-changelog -t api-v --commit-path packages/api --stdout # Lerna 风格 tag形如 api1.2.0 standard-changelog -l api --commit-path packages/api --stdout # 自定义输入/输出文件--outfile 默认等于 --infile standard-changelog -i HISTORY.md -o RELEASES.md--append-a用于 changelog 采用旧→新排序、新 release 应写到文件底部的仓库。默认值与关键机制的源码印证上面参数表的默认值列并非凭空而来可以直接在 ConventionalChangelog 构造函数 中看到初始参数this.params Promise.resolve({ options: { append: false, releaseCount: 1, formatDate, transformCommit: defaultCommitTransform }, commits: { format: %B%n-hash-%n%H%n-gitTags-%n%d%n-committerDate-%n%ci, merges: false } })即releaseCount: 1、append: false以及提交记录中显式排除 merge 提交与 preset 中的merges: false双重保证。另外几个值得注意的实现细节均来自 ConventionalChangelog.ts版本号来源与链接回退readPackage()会向上查找最近的package.json取其version作为版本若package.json没有repository字段会回退读取git remote origin的 URL 来生成 commit/compare 链接见 getPackageJson。没有任何 repository 信息时 changelog 依然会生成只是版本号和 hash 为纯文本。-r 0的覆盖语义releaseCount为 0 时from置空即从仓库最早提交开始重新生成所有 release并覆盖输出文件——这就是重新生成整个历史的实现路径见 getCommits。Unreleased区块当package.json的 version 与最新 tag 相同、但 tag 之后又有新提交时--output-unreleased或 API 的outputUnreleased会把这些提交渲染到# Unreleased标题下见 finalizeContext。--config/--context的加载方式CLI 通过 loadDataFile 加载这两个文件——.json走JSON.parse其他扩展名按 ESM 模块动态import并取其default导出。JS API 用法README 给出的最小示例注意仓库文档与测试中实际以process.cwd()显式传入工作目录StandardChangelog的构造参数是必填的import { StandardChangelog } from standard-changelog const generator new StandardChangelog(process.cwd()) .readPackage() generator .writeStream() .pipe(process.stdout)API 要点依据 JS API 文档 与基类实现构造参数接受工作目录字符串或ConventionalGitClient实例new StandardChangelog(new ConventionalGitClient(/path/to/repo))所有配置方法readPackage、tags、commits、options、context、writer等只把参数排队并以this返回惰性求值——在迭代write()或读取writeStream()之前不会触碰 git因此可以任意顺序链式调用write(includeDetails?)是 async generator每个 release 产出一个 chunk传true时产出结构化对象{ log, keyCommit }log为该 release 的 MarkdownkeyCommit为标识该 release 的提交writeStream(includeDetails?)用Readable.from(...)把同样的输出包装成 Node.js 可读流方便pipe到文件见 writeStream 实现构造函数内config(angular())之后仍可再调用loadPreset()或config()覆盖Angular 默认配置适合在 Angular 默认值上做少量定制的场景standard-changelog通过export * from conventional-changelog完整转发基类导出因此ConventionalChangelog、packagePrefix等辅助函数也可直接从standard-changelog导入。monorepo 中按包生成发布说明的典型写法文档站示例模式import { StandardChangelog, packagePrefix } from standard-changelog const changelog new StandardChangelog(gitClient) .commits({ path: projectPath }) // 只统计该包目录下的提交 .tags({ prefix: packagePrefix(my-package) }) // 匹配 my-package1.2.0 形式的 tag .readRepository() .context({ version: nextVersion }) // 即将发布的版本号 .writer({ preamblePartial }) // 可选release 区块前言模板 for await (const section of changelog.write()) { // 将 section 追加到该包的 CHANGELOG.md }测试如何验证这一封装仓库自带的测试 index.spec.ts 完整演示了这条链路的最低验证标准初始化一个临时 git 仓库并创建一条feat: first commit提交然后断言StandardChangelog生成的 changelog 包含Features分组it(should generate angular changelog, async () { const log new StandardChangelog(testTools.cwd) .readPackage() .write() const chunks await toArray(log) expect(chunks[0]).toContain(Features) expect(chunks.length).toBe(1) })这恰好印证了 README 的核心承诺无需任何 preset 安装步骤feat:类型的提交会被自动归入Features小节。适用前提与限制小结提交必须遵循 Angular/conventional 规范feat:、fix:、perf:等 type 之外的提交以及 merge 提交不会进入输出不符合规范的历史提交需要配合--config覆盖 parser 或改用其他 preset-p。依赖 semver tag默认范围由上一个 semver tag决定若仓库没有 tag可显式指定--from/--to或用-r 0生成完整历史。环境要求Node.js ≥ 22、纯 ESM 项目依赖包为 ESM-only。-r 0会覆盖输出文件首次使用或迁移时请知悉。链接渲染依赖package.json的repository字段缺失时回退git remote origin不支持的主机平台只会产生警告而不阻断生成见 write 中的 warn 逻辑。更完整的 CLI 示例与 API 参考可继续查看仓库内的 CLI 文档、JS API 文档 与 Introduction。赞分享开发工具CLI文档【免费下载链接】conventional-changelogGenerate changelogs and release notes from a projects commit messages and metadata.项目地址https://gitcode.com/gh_mirrors/co/conventional-changelog点击查看免费下载相关推荐Nomad 仓库 CHANGELOG 协作规范与 go-changelog 自动化生成实践Nomad 仓库 CHANGELOG 协作规范与 go changelog 自动化生成实践 导读 本文以 HashiCorp Nomad 仓库的 contrib任务调度云原生运维后端pytest changelog 贡献指南读懂 changelog/ 目录与 towncrier newsfragment 规范pytest changelog 贡献指南读懂 changelog/ 目录与 towncrier newsfragment 规范 导读 本文围绕当前仓库中 c测试开发工具Angular Commit Message 格式规范详解从提交信息结构到 Changelog 自动生成Angular Commit Message 格式规范详解从提交信息结构到 Changelog 自动生成 Angular 官方仓库 angular/angu前端Web框架上一篇如何配置 Spring Cloud Sleuth从基础设置到高级调优的完整指南下一篇【免费下载】 开源项目推荐开心消消乐创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考