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

Cod*_*ila 8 tfs build-definition npm

我使用构建定义在构建期间将npm警告作为错误. 在此输入图像描述

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

/p:TreatWarningsAsErrors=False
Run Code Online (Sandbox Code Playgroud)

但它还没有工作.

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

我从post-build脚本调用npm install命令.

在我尝试但未成功的更改之后,我还重新启动了构建控制器和构建代理.

感谢这方面的任何帮助.

Mar*_*tin 9

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

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


Jam*_*phy 7

MSBuild参数在这里不会帮助你...后构建脚本在MSBuild完成执行后运行.

问题是npm正在向stderr流写入警告,TFS会检测并报告为错误.您可以通过将错误流重定向到stdout这样来抑制此问题:

npm install 2>&1
Run Code Online (Sandbox Code Playgroud)

但是,这将抑制错误以及警告,在您的情况下可能会或可能不会接受.在我们的例子中,我们在预构建脚本期间从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
Run Code Online (Sandbox Code Playgroud)

请注意,我们也将其设置$LASTEXITCODE为零,以便PowerShell不会将退出代码从npm传递回TFS.


小智 6

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

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

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

env:
  CI: false
Run Code Online (Sandbox Code Playgroud)


Pat*_*SFT 1

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

/p:TreatWarningsAsErrors="false"
Run Code Online (Sandbox Code Playgroud)