Ionide.KeepAChangelog 0.2.0
dotnet add package Ionide.KeepAChangelog --version 0.2.0
NuGet\Install-Package Ionide.KeepAChangelog -Version 0.2.0
<PackageReference Include="Ionide.KeepAChangelog" Version="0.2.0" />
paket add Ionide.KeepAChangelog --version 0.2.0
#r "nuget: Ionide.KeepAChangelog, 0.2.0"
// Install Ionide.KeepAChangelog as a Cake Addin #addin nuget:?package=Ionide.KeepAChangelog&version=0.2.0 // Install Ionide.KeepAChangelog as a Cake Tool #tool nuget:?package=Ionide.KeepAChangelog&version=0.2.0
Ionide.KeepAChangelog
该项目实现了一个根据 KeepAChangelog 中指定的规范进行的变更日志解析器。它还提供 MSBuild 任务和目标来自动设置您的 NuGet 包的 版本 和 包发布说明,以便变更日志是您的真相来源。
配置此包后,它将使用来自最新变更日志发布中匹配的数据设置可打包项目的 Version
、PackageVersion
和 PackageReleaseNotes
,以及添加 BuildDate
的 AssemblyMetadata,格式为 YYYY-mm-dd
。
安装
MSBuild 包编写为一组任务和目标,这些任务和目标会被自动使用。您只需安装 Ionide.KeepAChangelog.Tasks
包即可!
<ItemGroup>
<PackageReference Include="Ionide.KeepAChangelog.Tasks" Version="<insert here>" PrivateAssets="all" />
</ItemGroup>
示例
看看这个库如何帮助您可能很有帮助。想象您有一个这样的项目文件
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>
<ItemGroup>
<Compile Include="Main.fs" />
</ItemGroup>
</Project>
和一个像这样的 CHANGELOG.md 文件
# Changelog
## 1.0.0 - 2022-01-14
### Added
* Initial release
使用此库打包项目将产生与打包如下所示的项目相同的结果
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<Version>1.0.0</Version>
<PackageVersion>1.0.0</PackageVersion>
<ReleaseNotes>
## 1.0.0 - 2022-01-14
### Added
* Initial release
</ReleaseNotes>
</PropertyGroup>
<ItemGroup>
<Compile Include="Main.fs" />
</ItemGroup>
</Project>
如果您的变更日志有多个版本,将使用最新版本。
自定义
对于这些目标,只有一个属性是重要的,那就是 ChangelogFile
。它需要指向您要读取的变更日志文件,但默认情况下该文件位于默认项目根目录的 CHANGELOG.md
,以防您想遵守默认设置。
API
在任务运行时,它将写入几个输出项和属性
名称 | 类型 | 描述 |
---|---|---|
UnreleasedChangelog | UnreleasedChangelogData 选项 | 如果存在,版本变更日志中会包含一个“未发布”的部分。此结构将包含所有存在的部分。 |
CurrentReleaseChangelog | ReleaseChangelogData选项 | 如果存在,版本变更日志中至少有一个发布记录。此结构将包含每个记录的详细信息。 |
AllReleasedChangelogs | ReleaseChangelogData列表 | 包含在ChangelogFile中所有已发布的按降序排列的有序列表。 |
LatestReleaseNotes | string选项 | 如果存在,包含最新发布的所有Changelog部分连接后的列表。这是一个方便属性,这样您就不必自行使用String.Join连接所有的ReleaseChangelogData 中的行! |
ChangelogData
该TaskItem具有对Changelog中每个已知部分的元数据
- 新增
- 修改
- 弃用
- 移除
- 修复
- 安全
在每种情况下,元数据的值是该部分的全部Changelog条目换行连接的列表。
UnreleasedChangelogData
此结构是具有"Unreleased"
标识符的ChangelogData
。
ReleaseChangelogData
此结构与ChangelogData
相同,但它包含两个额外的元数据项
TaskItem
的Identity
是发布的语义版本TaskItem
的Date
是发布日期的YYYY-MM-DD
格式日期
如何贡献
冒名顶替综合症免责声明:我希望得到您的帮助。真的,我是。
可能有一个小声音在告诉你你还没有准备好;你需要做更多的教程,或学习另一个框架,或再写几篇博客,然后你才能帮助我完成这个项目。
我向您保证,事实并非如此。
该项目有一些明确的贡献指南和期望,您可以在这里阅读。
贡献指南概述了您需要遵循的过程,以便合并补丁。通过明确说明期望和过程,我希望这将使您更容易做出贡献。
而您不仅需要编写代码。您可以通过编写文档、测试,甚至通过提供关于此工作的反馈来提供帮助。(是的,这包括提供关于贡献指南的反馈。)
感谢您的贡献!
贡献和版权
该项目托管在GitHub上,您可以在那里报告问题、复制项目并提交_pull请求。
该库可在MIT许可下使用,该许可允许修改和商业及非商业目的的分发。
请注意,该项目以Contributor Code of Conduct
发布。您参与该项目即表示同意遵守其条款。
产品 | 版本 兼容和额外的计算目标框架版本。 |
---|---|
.NET | net5.0 已计算。 net5.0-windows 已计算。 net6.0 已计算。 net6.0-android 已计算。 net6.0-ios 已计算。 net6.0-maccatalyst 已计算。 net6.0-macos 已计算。 net6.0-tvos 已计算。 net6.0-windows 已计算。 net7.0 已计算。 net7.0-android 已计算。 net7.0-ios 已计算。 net7.0-maccatalyst 已计算。 net7.0-macos 已计算。 net7.0-tvos 已计算。 net7.0-windows 已计算。 net8.0 已计算。 net8.0-android 已计算。 net8.0-browser 已计算。 net8.0-ios 已计算。 net8.0-maccatalyst 已计算。 net8.0-macos 已计算。 net8.0-tvos 已计算。 net8.0-windows 已计算。 |
.NET Core | netcoreapp2.0 已计算。 netcoreapp2.1 已计算。 netcoreapp2.2 已计算。 netcoreapp3.0 已计算。 netcoreapp3.1 已计算。 |
.NET Standard | netstandard2.0 兼容。 netstandard2.1 已计算。 |
.NET Framework | net461 已计算。 net462 已计算。 net463 已计算。 net47 已计算。 net471 已计算。 net472 已计算。 net48 已计算。 net481 已计算。 |
MonoAndroid | monoandroid 已计算。 |
MonoMac | monomac 已计算。 |
MonoTouch | monotouch 已计算。 |
Tizen | tizen40 已计算。 tizen60 已计算。 |
Xamarin.iOS | xamarinios 已计算。 |
Xamarin.Mac | xamarinmac 已计算。 |
Xamarin.TVOS | xamarintvos 已计算。 |
Xamarin.WatchOS | xamarinwatchos 已计算。 |
-
.NETStandard 2.0
- FParsec (>= 1.1.1)
- FSharp.Core (>= 6.0.5)
- SemanticVersion (>= 2.1.0)
NuGet 包
此包未由任何 NuGet 包使用。
GitHub 仓库
此包未由任何流行的 GitHub 仓库使用。
### 更改
* [更新了解析器以支持每个主要部分下的任意内容](https://github.com/ionide/KeepAChangelog/pull/22)(感谢 @nojaf!)