我正在尝试为标准Angular CLI命令(例如ng build
,ng serve
,ng test
)配置VS代码任务。目的是获取运行CLI命令时可以轻松解决的问题列表。当前,我直接从VS Code终端运行这些命令,但是有时很难导航到错误,因为并非终端中的所有源链接都是可单击的。无论如何,VS Code问题列表将更加方便。我想知道仍然没有标准的匹配器,尽管Angular如此受欢迎,还是我错过了一个?
我试图创建一个自定义匹配器,但是看起来比我想象的要难。 Angular CLI输出typescript错误以及html&scss错误,因此任务应包含多个匹配器。我不能使用标准的$tsc
匹配器,因为Angular CLI输出与TS编译器的输出略有不同-第一个错误以ERROR in
开头,$tsc
匹配器无法识别此错误。
例如,这里有ng test
个任务,但它没有按预期工作:
F8
导航到第一个错误时,有时会清除问题列表。我猜猜匹配器与在打开文件时检测到错误的tsserver冲突。// .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
}
}]
}
答案 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