Как прочитать версию package.json в сборке TFS
Я использую TFS 2017 для CI, я не хочу, чтобы версия хранилась в файле package.json моего основного проекта.net, я попробовал этот скрипт powershell:
$SemverVersion = (Get-Content -Raw -Path Path/package.json | ConvertFrom-Json).version
Я получаю эту ошибку в журналах:
Get-Content : Impossible de trouver un paramètre positionnel acceptant l'argument «
Le processus s'est achevé avec le code de sortie 0. 1 erreur(s) écrite(s) dans le flux d'erreurs.
Есть ли другой способ или инструмент для чтения версии package.json в TFS Build?
3 ответа
@BenH правильно. Пожалуйста, проверьте этот сайт:
Raw - это динамический параметр, который поставщик FileSystem добавляет в командлет Get-Content. Этот параметр работает только на дисках файловой системы.
Этот параметр представлен в Windows PowerShell 3.0.
Пожалуйста, установите более новую версию Powershell на компьютере агента сборки и перезапустите службу агента сборки, чтобы попробовать еще раз.
@BenH, этот PowerShell работает хорошо:
(Get-Childitem -Path .\ -Include *package.json* -Recurse -ErrorAction SilentlyContinue | Where {$_.FullName -notlike "*\wwwroot\*"} | Where {$_.FullName -notlike "*\no
de_modules\*"}| Where {$_.FullName -like "*\release\*"} | Select-Object -First 1).fullName
>>> $version = (Get-Content $path) -join "`n" | ConvertFrom-Json | Select -ExpandProperty "version"
>>> Write-Host ("##vso[task.setvariable SemverVersion=$version;]$version")
Сначала я читаю путь и сохраняю его в $path
переменная, затем используйте эту переменную в качестве параметра в Get-Content, чтобы прочитать версию и сохранить ее $version
наконец я установил $version
в SemverVersion
Переменная env, есть ли предложение улучшить этот ответ?
Что-то вроде этого как не один лайнер:
$jsonFile = Get-Content "package.json"
$jsonObj = $jsonFile | ConvertFrom-Json
$versionPrefix = $jsonObj.version