VS Код задачи задачи соответствия для угловых CLI команды построения / подачи / тестирования - PullRequest
0 голосов
/ 30 сентября 2019

Я пытаюсь настроить задачи кода VS для стандартных команд Angular CLI, таких как ng build, ng serve, ng test. Цель состоит в том, чтобы получить список проблем, которые я могу легко преодолеть, когда я запускаю команду CLI. В настоящее время я запускаю эти команды непосредственно из терминала VS Code, но иногда бывает сложно перейти к ошибке, поскольку не все ссылки на источники в терминале являются интерактивными. Список проблем с кодом VS был бы более удобным. Интересно, стандартного сопоставителя до сих пор нет, несмотря на то, что Angular настолько популярен, или я его пропускаю?

Я пытался создать настраиваемое сопоставление, но оно выглядит сложнее, чем я ожидал. Angular CLI выводит ошибки машинописного текста, а также ошибки html и scss, поэтому задача должна содержать несколько сопоставителей. Я не могу использовать стандартный $tsc matcher, потому что выход Angular CLI немного отличается от вывода компилятора TS - первая ошибка начинается с ERROR in, и эта ошибка не распознается $tsc matcher.

Вот, например, задача ng test, но она не работает должным образом:

  1. Когда я перехожу к первой ошибке, нажимая F8, список проблем иногда очищается. Я предполагаю, что сопоставитель конфликтует с цсервером, который обнаруживает ошибку при открытии файла.
  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
        }
    }]
}
...