9 个版本

0.3.0 2024年6月19日
0.2.4 2024年6月12日
0.2.3 2024年3月24日
0.2.2 2023年9月17日
0.0.1 2023年6月13日

开发工具 中排名第 299

Download history 14/week @ 2024-05-02 1/week @ 2024-05-09 1/week @ 2024-05-16 6/week @ 2024-05-30 157/week @ 2024-06-06 176/week @ 2024-06-13 94/week @ 2024-06-20 8/week @ 2024-06-27 7/week @ 2024-07-04 13/week @ 2024-07-11 15382/week @ 2024-07-18 8422/week @ 2024-07-25 18560/week @ 2024-08-01 16821/week @ 2024-08-08 27785/week @ 2024-08-15

每月下载量 73,743
3 开源软件包中使用(2 个直接使用)

MIT/Apache

27KB
529 代码行

变更集

一个实现 Changesets 的 Rust crate。如果您需要一个支持此格式的 CLI,请查看 Knope

它能做什么?

此 crate 以编程方式处理 变更集,仅关注变更集的格式和约定。它特别 解析 Markdown,变更内容被视为纯文本。

由于难以测试,此处没有复制粘贴示例。因此,以下是常见任务的链接

什么是变更集?

发布一个项目至少需要两件事

  1. 设置新的版本,最好是 语义版本
  2. 以某种形式的发布说明描述变更,例如 变更日志

手动执行此操作的方法是回顾自上次发布以来的所有变更,编写变更日志,并决定新的版本。然而,您在 创建变更(例如,合并拉取请求)和 发布变更 之间的时间越长,您忘记东西的可能性就越大。如果您有很多变更或项目,这种情况尤其如此。

变更集是一种跟踪变更并在发布时将它们捆绑在一起的方法。对于每个创建的变更,您将创建一个包含哪些包受到影响、它们如何受到影响(以 语义版本 的术语)以及该变更的 Markdown 摘要的 Markdown 文件。例如,您可能会合并一个包含以下两个变更文件的 PR

.changeset/new_feature_to_fix_bug.md

---
changesets: minor
knope: patch
---

Added a feature to `changesets` to fix a bug in `knope`.

.changeset/new_feature_for_knope.md

---
knope: minor
---

This is a feature for Knope in the same PR

当您发布时,knope 包会将其包含在其变更日志中(并根据最高变更类型提升版本),而 changesets 包只会将其包含在其变更日志中的第一个摘要。

这与常规提交非常相似,但不依赖于Git。您可以使用工具Knope同时使用常规提交。

本项目中使用的术语

变更

一个Markdown文件(通常位于.changeset目录中),描述了对一个或多个软件包的变更。注意,这与changesets的原始定义相匹配。一个变更包含一个总结(Markdown格式)、受影响的软件包列表以及每个软件包的“变更类型”。文件必须遵循一个非常严格的格式

变更总结

对变更的Markdown描述。这是变更文件的正文。它应包含在生成的变更日志中。

变更类型

一个字符串,描述了这是哪种类型的变更。如果它是patchminormajor之一,则版本号将相应地增加。所有其他类型的变更在版本控制上等同于patch,但在生成变更日志时可能具有不同的效果。

软件包

一个可发布的代码单元。例如,可以是Rust的crate、JavaScript的包或Go的模块。一个变更可以影响多个软件包。

变更集

将要一起发布的变更的集合。值得注意的是,这与changesets的原始定义不同,后者没有术语来定义多个变更的组合。一个变更集可以影响任意数量的软件包。

发布

变更集的一部分,适用于单个软件包,并决定了该软件包如何发布。

变更文件格式

变更文件是必须以.md结尾的Markdown文件。文件内容必须如下所示

  1. 单独一行包含---(三个短横线)。
  2. 任意数量的包含package: change type对的行,其中package定义了受此变更影响的软件包,而change type变更类型。每行一个对。第一个:用于确定软件包和变更类型之间的分隔,因此软件包名称不能包含:
  3. 单独一行包含---(三个短横线)。
  4. 文件的其余部分可以包含任何有效的Markdown文本。

与原始变更集的不同之处

  1. 原始版本是用JavaScript实现的,旨在与Node.js一起使用。这是用Rust实现的,主要用于Knope
  2. 原始版本有四个固定的变更类型(majorminorpatchnone)。这个只有前三个,并允许自定义变更类型(在构建变更日志时提供更多灵活性)。没有指定变更不影响版本的方法,因为通常不支持发布不增加版本号的软件包。
  3. 原始定义单个Markdown文件为“变更集”,没有术语来定义变更文件集合(例如,在.changeset文件夹中)。这个crate将“变更集”定义为目录中的变更文件集合(例如,.changeset是一个变更集)。单个变更文件称为“变更”。

有问题?

如果您有任何问题、评论或建议,请创建一个讨论(在检查现有讨论后)。

无运行时依赖