Azure DevOps管道中的npm版本

Azure DevOps管道中的npm版本,npm,azure-devops,semantic-versioning,azure-artifacts,Npm,Azure Devops,Semantic Versioning,Azure Artifacts,我在Azure DevOps中有一个构建管道,它通过npm pack发布工件,以便以后发布到工件提要中 我想通过GIT设置我的主要版本和次要版本,但补丁版本要与版本号相匹配。例如 1.2.20201212.4 其中1和2为主要版本。次要版本通过GIT手动更新 20201212.4是补丁和修订号 有人能帮我找出所需的npm version命令参数,从源代码中保留minor.major版本,并从$(Build.BuildNumber)变量中仅更新补丁和修订部分吗?在Azure Devops中,您可

我在Azure DevOps中有一个构建管道,它通过
npm pack
发布工件,以便以后发布到工件提要中

我想通过GIT设置我的主要版本和次要版本,但补丁版本要与版本号相匹配。例如

1.2.20201212.4
其中1和2为主要版本。次要版本通过GIT手动更新 20201212.4是补丁和修订号


有人能帮我找出所需的
npm version
命令参数,从源代码中保留minor.major版本,并从$(Build.BuildNumber)变量中仅更新补丁和修订部分吗?

在Azure Devops中,您可以使用

然后,您可以将任务添加到NPM pack任务之前,以替换
Package.json->Version字段中的变量。

以下是步骤:

Package.Json文件:

{
  "name": "helloword",
  "version": "0.0.#{SetNumber}#",
  "description": "Hello World",
  "main": "server.js",
...
}
建造管道:

  • 在构建管道中设置变量
  • 添加替换令牌任务
  • 注意:根据我的测试,npm包在azure devops中无法支持xx.x.x.x版本格式(npm发布)。它可以支持x.x.x-x

    因此,您可以这样设置buildnumber:
    $(日期:yyyyMMdd)-(Rev:r)

    结果:

    更新:

    您可以尝试使用Npm Version命令

    npm version  0.0.$(build.buildnumber) --no-git-tag-version
    

    更新2:

    您可以尝试使用以下powershell脚本获取Package.json中的version字段。然后更新补丁号

    $filePath = "$(Build.sourcesdirectory)\package.json" #filepath
    $Jsonfile= Get-Content $filePath | ConvertFrom-Json
    $version = $Jsonfile.version
    
    echo $version
    
    $major,$minor,$build = $version.Split('.')    
    
    $build = "$(build.buildnumber)"    
    
    $bumpedVersion = $major,$minor,$build  -join(".")
    
    echo $bumpedVersion
    
    Write-Host "##vso[task.setvariable variable=version]$bumpedVersion"
    
    在Npm版本中,可以运行以下命令:

    version $(version) --no-git-tag-version
    

    谢谢Kevin,除了在package.json causs>中使用“version”:“0.1.{SetNumber}#”执行任务:npm run build