angular - 用于 Angular CLI 构建/服务/测试命令的 VS Code 任务问题匹配器
问题描述
我正在尝试为标准 Angular CLI 命令配置 VS 代码任务,例如ng build
, ng serve
, ng test
. 目的是获取问题列表,当我运行 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
}
}]
}
解决方案
我在 Angular 11 中遇到了同样的问题。我在这里的 vscode 源代码中找到了标准的 $tsc 问题匹配器, 并且我还在开头添加了 Error 这个词:
"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
}
}
],
我也在这里写过这个问题
推荐阅读
- javascript - 反应路由器:功能无效反应子
- angularjs - 如何从服务函数中访问 $rootScope 值
- mysql - MySQL 查询 - 更优雅的选择?在 SELECT 的多个表中引用相同的列名
- angular - 尝试将数据作为参数传递给服务文件
- java - 不同的端点看似随机地获得授权
- php - # 如何使用 DateTime 类(处理转换、格式、差异和时区)
- java - Akka Streams onFailuresWithBackoff 未重新启动流程
- python - 在现有的张量流图中设置静态形状,其中动态形状用于输入
- oracle - Oracle SQL 中两个表如何连接
- php - 为什么 PHP 错误日志中的路径被截断/截断?