GitVersion 和 bower.json 更新版本

GitVersion and bower.json update version

我已经设法让 GitVersion 处理我的 .net 项目(它正确地更新了我的 AssemblyInfo.cs)。

现在我想为我的 AngularJs 应用程序做同样的事情。 我可以看到 运行 GitVersion 显示了正确的版本号,但我想更新我的 bower.json 文件。 有谁知道我该怎么做?

你用什么来执行GitVersion?即你在使用脚本吗?

GitVersion 不会为您更新该文件,但 GitVersion 会声明当前版本号,然后您可以在脚本中使用其他内容来更新文件。

就个人而言,我在这方面所做的几乎所有事情都是使用 Cake, and there is an addin called MagicChunks 完成的,这使得这非常容易。例如,这是我在我的一个项目中更新 package.json 文件的方式:

https://github.com/gep13/chocolatey-vscode/blob/develop/build.cake#L137-L139

    TransformConfig(projectToPackagePackageJson, projectToPackagePackageJson, new TransformationCollection {
        { "version", parameters.Version.SemVersion }
    });

但是您同样可以在 PowerShell 或 bash 或您用于 运行 构建的任何内容中做类似的事情。

更新:

要直接在 PowerShell 中执行类似的操作,您需要这样的东西(注意,尚未测试):

$gitVersionExe = "./../<Path to where GitVersion.exe lives>";
$output = . $gitVersionExe
$joined = $output -join "`n"
$versionInfo = $joined | ConvertFrom-Json
$version = $versionInfo.LegacySemVer

(Get-Content .\bower.json).replace('1.0.0', $version) | Set-Content .\bower,json

注意: 在这里,在替换语句中,我假设您要替换 bower.json 文件。在实践中,您需要微调此替换,以便您只是 replacing/changing,正是您要更改的文本。

注意:您可以使用 GitVersion 中的任何 属性,我刚刚以 LegacySemVer 为例