ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

standard-changelog 版本史全解:从 0.0.1 初始版到 8.x ESM 构建器架构的十年演进

standard-changelog 版本史全解:从 0.0.1 初始版到 8.x ESM 构建器架构的十年演进 开发工具CLI文档【免费下载链接】conventional-changelogGenerate changelogs and release notes from a projects commit messages and metadata.项目地址https://gitcode.com/gh_mirrors/co/conventional-changelog点击查看免费下载本文以 standard-changelog 的 CHANGELOG 为核心完整梳理这个包从 2016 年 1 月初始化0.0.1到 2026 年 7 月8.1.0的全部版本变更、各次破坏性变更的迁移影响并结合当前仓库源码给出 8.x 版本的完整 CLI 参数与 JS API 用法。读完本文你可以准确判断从旧版本升级需要处理哪些断点并掌握在 Node.js 22 环境下用 Angular 提交约定生成 CHANGELOG 的两种方式。什么是 standard-changelogstandard-changelog的定位可以用一句话说清它是conventional-changelog生成器内置了 Angular 提交约定预设的版本读取 git 历史后生成CHANGELOG.md把提交自动归组为 Features、Bug Fixes、Performance Improvements 等小节。与通用conventional-changelog的唯一区别是无需安装或选择预设——它永远使用 Angular 预设见 README 与 文档站入口页。从当前仓库的 package.json 可以确认 8.1.0 的关键事实type: moduleESM-only 包engines.node: 22即要求 Node.js 22 或更高运行时依赖仅三个工作区包conventional-changelog/git-client、conventional-changelog-angular预设、conventional-changelog核心生成器发布时挂载standard-changelog命令publishConfig.bin。十年版本时间线2016–2026以下各节内容均直接来自 CHANGELOG.md按年代分段归纳。2016–2018初始化与 2.0 里程碑0.0.12016-01-30初始版本CHANGELOG 记录其初始化关闭了上游 conventional-changelog 仓库的 issue #84——这个包从诞生起就是 conventional-changelog 工具链的一部分。1.0.0 → 1.0.192017-03-11 至 2018-04-161.x 系列共 19 个版本CHANGELOG 中均为 Version bump only 条目无独立功能记录属于跟随 monorepo 联动的维护期。2.0.02018-05-29唯一的 2.x 早期重大变更是把包最低 Node 版本要求定为当时 Node 发布工作组支持的最老 LTS即 Node 6处于 Maintenance LTS 阶段构成一次破坏性变更。2.0.22018-11-01升级 Lerna 3修复 Node.js v11 下的错误issue #385。2018–20202.0.x 长期维护期2.0.3 到 2.0.272018-11-01 至 2020-11-05是典型的 monorepo 联动维护期大量条目只有 Note:Version bump only for package standard-changelog但其中几个安全/依赖类修复值得关注版本日期修复内容2.0.122019-05-18figures 升级到 v3#4532.0.142019-10-02tempfile 升级到 v3#4592.0.162019-10-24rimraf 升级到 v3#514修复 lodash 安全漏洞#5352.0.182019-11-14为 CLI flags 补充 TypeScript 类型#5512.0.232020-05-08yargs-parser 迁移出被标记存在漏洞的版本#635可以看到这条维护期的主线是依赖安全加固与CLI 类型补全包本身行为稳定。2023三次重大架构版本3.0.0 / 4.0.0 / 5.0.02023 年 5 月到 9 月间连续发布了 3.0.0、4.0.0、5.0.0 三个破坏性版本是这个包历史上变化最密集的时期3.0.02023-06-06要求 Node 14CLI 工具开始支持Lerna 风格的pkgversion标签#175补充 CLI flags 类型#551重构中尽可能移除 lodash 依赖#959。4.0.02023-08-26要求 Node 16所有预设统一改为导出预设配置工厂函数conventional-changelog-preset-loader新增loadPreset与createPresetLoader两个导出。CHANGELOG 特别说明如果你的项目只是按名字间接引用预设则无需改配置升级包即可。另外从 chalk 迁移到 picocolors#1074并修复了 semver 漏洞#1071关闭 #1019。5.0.02023-09-08回调全面 Promise 化。与 standard-changelog 直接相关的是其createIfMissing方法从此返回 Promise同批次的git-semver-tags、conventional-recommended-bump包gitSemverTags、conventionalRecommendedBump函数也改为返回 Promise#1111、#1112。2024–2026ESM-only、Builder API 与手动提交范围6.0.02024-04-26要求 Node 18除gulp-conventional-changelog外所有包转为 ESM-onlyCJS → ESM 迁移#1144修复了 config 加载问题#1234meow 升级到 v13#1190。7.0.02025-05-19核心架构合并——conventional-changelog-core与conventional-changelog-cli两个包并入conventional-changelog同时引入全新 Builder API 与更新后的 CLI flags#1352。7.0.1 是同日的构建修复。当前 src/index.ts 中StandardChangelog extends ConventionalChangelog的继承关系就是这一合并的产物。8.0.02026-06-26要求Node.js 22 或更高新增手动提交范围支持#1486即 CLI 的--from/--to参数。8.0.12026-07-04把包的 homepage 与文档指向迁移到文档网站。8.1.02026-07-09CLI 参数解析从meow替换为argue-cli#1505。当前 cli.ts 中的readFlags()/runProgram()即替换后的驱动方式。破坏性变更与升级要点把上表按版本压缩成升级决策清单版本破坏性变更升级时需要做的事2.0.0最低 Node 提至 6当时最老 LTS确认 Node 版本3.0.0要求 Node 14确认 Node 版本4.0.0要求 Node 16预设接口改为工厂函数preset-loader 新增loadPreset/createPresetLoader按名字引用预设则无需改配置直接使用预设对象的调用方需适配工厂函数5.0.0createIfMissing等 API 返回 Promise用回调写的调用代码要改为await6.0.0要求 Node 18包为 ESM-onlyrequire()调用需改import7.0.0core/cli 并入conventional-changelogBuilder API 与 CLI flags 全面更新从旧包迁移导入改用StandardChangelog构建器 API 与新 flags8.0.0要求 Node.js 22升级 Node 运行时需要说明的适用前提7.0.0 起 CLI flags 的变化意味着 6.x 时代脚本里使用的旧参数名在 7.x/8.x 下不再有效迁移时应以standard-changelog --help输出和当前 cli.ts 中的参数清单为准。当前版本8.x的 CLI 用法README 给出的最小用法是standard-changelog它基于自上一个 semver 标签以来的提交按 Feature、Fix、Performance Improvement、Breaking Changes 模式匹配并生成 changelog。完整参数清单来自 cli.ts 的 HELP 文本如下参数说明-i, --infile从此文件读取 CHANGELOG默认CHANGELOG.md-o, --outfile将 CHANGELOG 写入此文件默认同 infile--stdout输出结果到 stdout 而不是写文件-p, --preset要使用的预设名默认angular-k, --pkgpackage.json的路径默认最近的 package.json-a, --append新版本记录追加在旧版本之前/之后默认false-f, --first-release首次生成 CHANGELOG-r, --release-count从最新开始生成多少个版本默认 1为 0 时重建整个 CHANGELOG 并覆盖输出文件--skip-unstable跳过不稳定标签如x.x.x-alpha.1、x.x.x-rc.2-u, --output-unreleased输出尚未发布的unreleasedchangelog-v, --verbose详细输出用于调试默认false-n, --config自定义配置脚本的路径-c, --context定义模板变量的 JSON 文件路径-l, --lerna-package为指定 Lerna 包:pkg-name1.0.0生成 changelog-t, --tag-prefix读取标签时使用的标签前缀--commit-path将 changelog 限定到特定目录--from提交范围起点标签或 SHA8.0.0 起支持--to提交范围终点标签或 SHA8.0.0 起支持高频场景示例来自 文档站# 首次引入工具时一次性重建完整历史覆盖输出文件 standard-changelog -r 0 # 只生成指定提交范围内的记录 standard-changelog --from v1.0.0 --to HEAD # 预览结果而不写文件 standard-changelog --stdout这些 CLI 行为都有测试佐证cli.spec.ts 覆盖了 infile/outfile 的各种组合追加/覆盖、文件缺失时自动创建、-k指定 package.json、--context相对/绝对路径、--first-release以及 context 文件缺失时退出码为 1 并报错等场景。当前版本的 JS API 用法standard-changelog是 ESM-only 包API 入口为 src/index.tsimport { 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()) } }可以清楚看到它的实现方式继承核心ConventionalChangelog构建器在构造函数中直接注入angular()预设配置并完整 re-exportconventional-changelog的所有内容packagePrefix等辅助函数也可从standard-changelog导入。典型用法是惰性构建器链——配置方法只是排队参数并返回this直到迭代write()或读取writeStream()时才真正访问 git见 API 文档import { StandardChangelog } from standard-changelog const generator new StandardChangelog(process.cwd()) .readPackage() for await (const chunk of generator.write()) { process.stdout.write(chunk) }也可以走流式写法README 示例const generator new StandardChangelog() .readPackage() generator .writeStream() .pipe(process.stdout)继承自ConventionalChangelog的构建器方法包括loadPreset()覆盖内置 Angular 预设、config()、readPackage(path?, transform?)、package(pkg)、readRepository()、repository(infoOrGitUrl)、tags(params)、commits(params, parserOptions?)、options(options)、context(context)、writer(params)、write(includeDetails?)与writeStream(includeDetails?)。其中commits({ from, to })就是 8.0.0 手动提交范围的 API 形态。在 ConventionalChangelog.ts 中可以看到支撑这些行为的底层实现构造函数默认releaseCount: 1、append: falseL62-L79getCommits()里isManualRange Boolean(commits.to (commits.from || commits.to ! HEAD))正是--from/--to的判定逻辑手动范围下直接按范围取提交否则按 semver 标签切片L251-L336write()按取标签 → 定稿 context → 定稿 writer 选项 → 取提交 → 转换 → 写入的顺序产出每个版本的 Markdown 块L584-L609。结语从 CHANGELOG 可以读出 standard-changelog 清晰的演进主轴2016–2020 年以依赖安全维护和 monorepo 联动版本为主2023 年完成 Node 版本收紧、预设工厂接口统一与 Promise 化三连2024 年转入 ESM-only2025–2026 年通过 core/cli 包合并落地 Builder API并在 8.0.0 将最低 Node 要求提到 22、新增手动提交范围。对于维护既有项目的团队按上文破坏性变更表逐版对照即可规划迁移对于新项目则直接以 8.x 的standard-changelog命令与StandardChangelog构建器 API 为起点配合 Angular 提交约定即可自动维护 CHANGELOG。赞分享开发工具CLI文档【免费下载链接】conventional-changelogGenerate changelogs and release notes from a projects commit messages and metadata.项目地址https://gitcode.com/gh_mirrors/co/conventional-changelog点击查看免费下载相关推荐Prometheus Operator 版本演进全解从 CHANGELOG 读懂十年 CRD 架构迭代2016—2026Prometheus Operator 版本演进全解从 CHANGELOG 读懂十年 CRD 架构迭代2016—2026 本文以仓库根目录 CHANGEL云原生可观测性plotly.py CHANGELOG 深度解读从 7.x 新特性到十年版本演进plotly.py CHANGELOG 深度解读从 7.x 新特性到十年版本演进 plotly.py 是 Python 生态中最流行的交互式绘图库之一其 C数据可视化数据分析android-gif-drawable架构演进史从初始版本到现在的变革android gif drawable架构演进史从初始版本到现在的变革 你是否曾为Android应用中的GIF动画卡顿、内存占用过高而烦恼是否在寻找一个高图像处理移动开发上一篇GCDWebServer WebDAV服务器终极指南轻松搭建个人云存储服务 下一篇Toasty核心功能深度解析错误、成功、警告、信息Toast的使用技巧创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表