禁用Npm警告为错误:构建定义tfs

时间:2016-01-21 07:42:10

标签: tfs npm build-definition

我使用构建定义在构建期间将npm警告作为错误。 enter image description here

然后我在构建定义中的 MSBuild Arguments 中添加了以下属性:

/p:TreatWarningsAsErrors=False

但它尚未发挥作用。

我也通过右键单击每个项目进行交叉检查,并且没有选中“将警告视为错误”选项。

我从后期制作脚本中调用 npm install 命令。

我在尝试更改后重新启动了构建控制器和构建代理,但没有成功。

对此方向的任何帮助表示赞赏。

5 个答案:

答案 0 :(得分:6)

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。

答案 1 :(得分:1)

可以使用loglevel选项,以使警告根本不出现。这样可以避免在标准错误中显示警告,从而停止构建或写入警告错误的问题。

我通常使用npm install --loglevel=error --no-update-notifier。我注意到更新检查还会中断npm的构建过程。

答案 2 :(得分:0)

请尝试使用正确的语法而不是您的

/p:TreatWarningsAsErrors="false"

答案 3 :(得分:0)

您可以使用--silent参数在安装过程中使npm静音:

npm install --silent

您不需要这样的任何msbuild参数。

答案 4 :(得分:0)

在 CI 服务器中,这是一个非常常见的问题,每当我们运行“npm build”时,管道就会失败

我们收到一些警告,CI 服务器将它们视为错误并且管道被终止。

要消除此错误,只需在管道中添加环境变量,如下所述:

env:
  CI: false