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
每月下载量 73,743 次
在 3 个 开源软件包中使用(2 个直接使用)
27KB
529 代码行
变更集
一个实现 Changesets 的 Rust crate。如果您需要一个支持此格式的 CLI,请查看 Knope。
它能做什么?
此 crate 以编程方式处理 变更集,仅关注变更集的格式和约定。它特别 不 解析 Markdown,变更内容被视为纯文本。
由于难以测试,此处没有复制粘贴示例。因此,以下是常见任务的链接
什么是变更集?
发布一个项目至少需要两件事
手动执行此操作的方法是回顾自上次发布以来的所有变更,编写变更日志,并决定新的版本。然而,您在 创建变更(例如,合并拉取请求)和 发布变更 之间的时间越长,您忘记东西的可能性就越大。如果您有很多变更或项目,这种情况尤其如此。
变更集是一种跟踪变更并在发布时将它们捆绑在一起的方法。对于每个创建的变更,您将创建一个包含哪些包受到影响、它们如何受到影响(以 语义版本 的术语)以及该变更的 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描述。这是变更文件的正文。它应包含在生成的变更日志中。
变更类型
一个字符串,描述了这是哪种类型的变更。如果它是patch
、minor
或major
之一,则版本号将相应地增加。所有其他类型的变更在版本控制上等同于patch
,但在生成变更日志时可能具有不同的效果。
软件包
一个可发布的代码单元。例如,可以是Rust的crate、JavaScript的包或Go的模块。一个变更可以影响多个软件包。
变更集
将要一起发布的变更的集合。值得注意的是,这与changesets的原始定义不同,后者没有术语来定义多个变更的组合。一个变更集可以影响任意数量的软件包。
发布
变更集的一部分,适用于单个软件包,并决定了该软件包如何发布。
变更文件格式
变更文件是必须以.md
结尾的Markdown文件。文件内容必须如下所示
- 单独一行包含
---
(三个短横线)。 - 任意数量的包含
package: change type
对的行,其中package
定义了受此变更影响的软件包,而change type
是变更类型。每行一个对。第一个:
用于确定软件包和变更类型之间的分隔,因此软件包名称不能包含:
。 - 单独一行包含
---
(三个短横线)。 - 文件的其余部分可以包含任何有效的Markdown文本。
与原始变更集的不同之处
- 原始版本是用JavaScript实现的,旨在与Node.js一起使用。这是用Rust实现的,主要用于Knope。
- 原始版本有四个固定的变更类型(
major
、minor
、patch
和none
)。这个只有前三个,并允许自定义变更类型(在构建变更日志时提供更多灵活性)。没有指定变更不影响版本的方法,因为通常不支持发布不增加版本号的软件包。 - 原始定义单个Markdown文件为“变更集”,没有术语来定义变更文件集合(例如,在
.changeset
文件夹中)。这个crate将“变更集”定义为目录中的变更文件集合(例如,.changeset
是一个变更集)。单个变更文件称为“变更”。
有问题?
如果您有任何问题、评论或建议,请创建一个讨论(在检查现有讨论后)。