Npm 使用package.json中的内部版本号

Npm 使用package.json中的内部版本号,npm,azure-devops,Npm,Azure Devops,我在Azure devops中有一个节点项目,希望将构建编号设置为当前package.json中的任何内容,并附加一个编号。因此,如果my package.json说版本是0.0.1-beta,那么构建号应该是0.0.1-beta+20190215.1 使用npm:npm-view-version很容易获得版本字符串,但我无法确定在管道中的何处存储和注入它以将其用作构建号。据我所知,构建编号只能设置为硬编码值或通过“手动”设置的变量,而不能像使用命令输出那样以动态方式设置 我尝试使用变量,首先是

我在Azure devops中有一个节点项目,希望将构建编号设置为当前package.json中的任何内容,并附加一个编号。因此,如果my package.json说版本是0.0.1-beta,那么构建号应该是
0.0.1-beta+20190215.1

使用npm:
npm-view-version
很容易获得版本字符串,但我无法确定在管道中的何处存储和注入它以将其用作构建号。据我所知,构建编号只能设置为硬编码值或通过“手动”设置的变量,而不能像使用命令输出那样以动态方式设置

我尝试使用变量,首先是一个自定义变量,但它不起作用。我还发现了一个名为
Build.Buildname
的变量,但它似乎无法写入

有什么想法吗

这是我正在试验的base pipeline.yaml的相关部分:

steps:
- task: NodeTool@0
  inputs:
    versionSpec: '8.x'
  displayName: 'Install Node.js'

- script: |
    npm install
    npmVersionString=$(npm view <package-name> version) 
    echo ##vso[task.setvariable variable=build.buildnumber]$npmVersionString
    npm run build
  displayName: 'npm install, set buildnumber and build'
步骤:
-任务:NodeTool@0
投入:
versionSpec:'8.x'
displayName:'Install Node.js'
-脚本:|
npm安装
npmVersionString=$(npm视图版本)
echo##vso[task.setvariable=build.buildnumber]$npmVersionString
npm运行构建
displayName:'npm安装,设置buildnumber和build'

要在生成期间更新生成编号,您不能只更新变量
build.BuildNumber
与每个变量一样,有一个特殊的命令来执行此操作:

##vso[build.updatebuildnumber]{build number}
因此,在您的情况下,请更换这一行

echo ##vso[task.setvariable variable=build.buildnumber]$npmVersionString
    echo "##vso[build.updatebuildnumber]$npmVersionString"
用这条线

echo ##vso[task.setvariable variable=build.buildnumber]$npmVersionString
    echo "##vso[build.updatebuildnumber]$npmVersionString"
(如果需要,请不要忘记附加内部版本号)

范例

- script: |
    npmVersionString=$(node -p "require('./package.json').version") 
    echo "##vso[build.updatebuildnumber]$npmVersionString"
  displayName: 'set build number'