Logo of changelogen

changelogen

使用 Conventional Commits 生成精美更新日志。

使用 Conventional Commits 生成漂亮的更新日志

快速开始

生成 Markdown 格式的更新日志并在控制台中显示

npx changelogen@latest

生成更新日志,更新 package.json 中的版本并更新 CHANGELOG.md(不提交)

npx changelogen@latest --bump

更新版本,更新 CHANGELOG.md 并进行 Git 提交和打标签

npx changelogen@latest --release

CLI 用法

npx changelogen@latest [...args] [--dir <dir>]

参数

  • --from: 起始提交引用。如果未提供,默认使用最新的 Git 标签
  • --to: 结束提交引用。如果未提供,默认使用 HEAD 中最新的提交
  • --dir: Git 仓库路径。如果未提供,默认使用当前工作目录
  • --clean: 判断工作目录是否干净,如果不干净则退出。
  • --output: 要创建或更新的更新日志文件名。默认为 CHANGELOG.md 并相对于目录解析。使用 --no-output 仅写入到控制台。
  • --bump: 确定 SemVer 变更并更新 package.json 中的版本。
  • --release: 更新 package.json 中的版本,并使用本地 git 创建提交和 Git 标签。你可以使用 --no-commit 禁用提交,使用 --no-tag 禁用标签。你可以通过添加 --push 启用自动将新标签和发布提交推送到你的 Git 仓库。
  • --publish: 将包作为新版本发布到 npm。你需要通过 .npmrc 或环境变量单独设置授权令牌。
  • --publishTag: 发布时使用自定义 npm 标签(默认为 latest
  • --nameSuffix: 为包名添加后缀(示例:--nameSuffix canaryfoo 重命名为 foo-canary
  • --versionSuffix: 为包版本添加后缀。当不带值或设置为 true 时,使用日期 + 提交哈希作为后缀。
  • --canary: --bump --versionSuffix 的快捷方式(如果参数具有字符串值,--nameSuffix 也将被添加)。
  • -r: 发布为特定版本。
  • --major: 更新为 SemVer 主要版本
  • --minor: 更新为 SemVer 次要版本
  • --patch: 更新为 SemVer 补丁版本
  • --premajor: 更新为 SemVer 预发布主要版本,可以通过字符串设置 ID。
  • --preminor: 更新为 SemVer 预发布次要版本,可以通过字符串设置 ID。
  • --prepatch: 更新为 SemVer 预发布补丁版本,可以通过字符串设置 ID。
  • --prerelease: 更新为 SemVer 预发布版本,可以通过字符串设置 ID。

changelogen gh 发布

Changelogen 具有与 GitHub 发布同步的内置功能。

为了手动同步发布,你可以使用 changelogen gh release。它将解析当前仓库(本地,然后远程)中的 CHANGELOG.md 并创建或更新发布。

用法

npx changelogen@latest gh release [all|versions...] [--dir] [--token]

要启用此集成,请确保 package.json 中存在有效的 repository 字段,或在 .changelogenrc 中设置了 repo

在未认证模式下,changelogen 默认会打开一个浏览器链接以进行手动发布。通过提供 GitHub 令牌,可以实现自动化。

  • 使用环境变量或 .env 文件,使用 CHANGELOGEN_TOKENS_GITHUBGITHUB_TOKENGH_TOKEN
  • 使用 CLI 参数,使用 --token <token>
  • 使用全局配置,将 tokens.github=<token> 放入 ~/.changlogenrc 文件中
  • 当通过 GitHub CLI 认证时,使用 gh auth login 令牌

配置

配置由 unjs/c12 从当前工作目录 (cwd) 加载。你可以使用 changelog.config.jsonchangelog.config.{ts,js,mjs,cjs}.changelogrc,或者使用 package.json 中的 changelog 字段。

有关可用选项和默认值,请参阅 https://raw.githubusercontent.com/unjs/changelogen/main/src/config.ts

💻 开发

  • 克隆此仓库
  • 使用 corepack enable 启用 Corepack(Node.js < 16.10 请使用 npm i -g corepack
  • 使用 pnpm install 安装依赖项
  • 使用 pnpm dev 运行交互式测试

许可

用心制作 💛

根据 MIT 许可证发布。