然后,我在Build Definition的MSBuild Arguments中添加了以下属性:
/p:TreatWarningsAsErrors=False
但它还没有工作。
我还通过右键单击每个项目进行了交叉检查,但没有一个项目选中了“将警告视为错误”选项。
我正在从构建后脚本调用npm install命令。
在我尝试过但没有成功的更改后,我还重新启动了构建控制器和构建代理。
对此方向的任何帮助表示赞赏。
然后,我在Build Definition的MSBuild Arguments中添加了以下属性:
/p:TreatWarningsAsErrors=False
但它还没有工作。
我还通过右键单击每个项目进行了交叉检查,但没有一个项目选中了“将警告视为错误”选项。
我正在从构建后脚本调用npm install命令。
在我尝试过但没有成功的更改后,我还重新启动了构建控制器和构建代理。
对此方向的任何帮助表示赞赏。
MSBuild 参数在这里对您没有帮助...构建后脚本在 MSBuild 完成执行后运行。
问题是npm正在将其警告写入stderr
流,TFS 检测到该流并将其报告为错误。您可以通过将错误流重定向到如下方式来抑制这种stdout
情况:
npm install 2>&1
但是,这将抑制错误和警告,这在您的情况下可能是可接受的,也可能是不可接受的。在我们的例子中,我们在预构建脚本期间从 PowerShell 脚本调用npm install 。我们重定向输出,但随后我们也扫描输出以查找字符串ERR!
,如下所示:
& npm install *>&1 | ForEach-Object {
$obj = $_
if ( $obj -is [System.Management.Automation.ErrorRecord] ) {
$s = $obj.Exception.Message
}
else {
$s = $obj.ToString()
}
if ( $s.Contains('ERR!') ) {
Write-Error $s
}
else {
Write-Output $s
}
}
$LASTEXITCODE = 0
请注意,我们还设置$LASTEXITCODE
为零,以便 PowerShell 不会将退出代码从npm传递回 TFS。
可以使用该loglevel
选项,以便根本不出现警告。这避免了在标准错误中显示警告从而停止构建或为警告写入错误的问题。
我通常使用npm install --loglevel=error --no-update-notifier
. 我注意到更新检查也会中断 npm 的构建过程。
您可以在安装过程中使用以下--silent
参数使 npm 静音:
npm install --silent
这种方式不需要任何 msbuild 参数。
在 CI 服务器中,这是一个非常常见的问题,即每当我们运行“npm build”时管道都会失败
我们收到一些警告,CI 服务器将它们视为错误并且管道被终止。
要消除此错误,只需在管道中添加环境变量,如下所述:
env:
CI: false
请尝试使用正确的语法而不是您的语法
/p:TreatWarningsAsErrors="false"