Angular CLI构建/服务/测试命令的VS Code任务问题匹配器

时间:2019-09-30 07:02:48

标签: visual-studio-code vscode-tasks

我正在尝试为标准Angular CLI命令(例如ng buildng serveng test)配置VS代码任务。目的是获取运行CLI命令时可以轻松解决的问题列表。当前,我直接从VS Code终端运行这些命令,但是有时很难导航到错误,因为并非终端中的所有源链接都是可单击的。无论如何,VS Code问题列表将更加方便。我想知道仍然没有标准的匹配器,尽管Angular如此受欢迎,还是我错过了一个?

我试图创建一个自定义匹配器,但是看起来比我想象的要难。 Angular CLI输出typescript错误以及html&scss错误,因此任务应包含多个匹配器。我不能使用标准的$tsc匹配器,因为Angular CLI输出与TS编译器的输出略有不同-第一个错误以ERROR in开头,$tsc匹配器无法识别此错误。

例如,这里有ng test个任务,但它没有按预期工作:

  1. 当我通过按F8导航到第一个错误时,有时会清除问题列表。我猜猜匹配器与在打开文件时检测到错误的tsserver冲突。
  2. 有时匹配器会丢失一些错误。
// .vscode/tasks.json

{
    "version": "2.0.0",
    "tasks": [{
        "label": "test",
        "type": "shell",
        "command": "ng test",
        "problemMatcher": [{
            "base": "$tsc",
            "fileLocation": [
                "relative",
                "${workspaceRoot}/src"
            ],
            "pattern":[{
                "kind": "ts",
                "regexp": "^(?:ERROR in )?(.*):(\\d+):(\\d+) - (error|warning|info) TS(.*): (.*)$",
                "file": 1,
                "line": 2,
                "column": 3,
                "severity": 4,
                "code": 5,
                "message": 6
            }]
        }],
        "group": {
            "kind": "test",
            "isDefault": true
        }
    }]
}

1 个答案:

答案 0 :(得分:1)

我在 Angular 11 中遇到了同样的问题。 我在 vscode 源代码中找到了标准的 $tsc 问题匹配器 here 我还在开头添加了错误这个词:

"problemMatcher": [
  {
    "base": "$tsc",
    "pattern": {
      "regexp": "^(Error: )?([^\\s].*)[\\(:](\\d+)[,:](\\d+)(?:\\):\\s+|\\s+-\\s+)(error|warning|info)\\s+TS(\\d+)\\s*:\\s*(.*)$",
      "file": 2,
      "line": 3,
      "column": 4,
      "severity": 5,
      "code": 6,
      "message": 7
    }
  }
],

我也写过关于问题here