如何使Visual Studio代码检查整个项目是否有错误?

时间:2017-01-17 16:59:00

标签: javascript typescript visual-studio-code

我正在使用VS Code进行TypeScript / JavaScript开发。当我打开文件时,它会检查该文件是否有错误。问题是如果我正在重构(比如我将一些共享代码移动到新位置或更改名称),它就不会告诉我这个错误,直到我打开带有问题的文件。 ...所以如果我想进行大量的重构,我必须打开每个文件,只是为了让它扫描文件是否有错误。

如何让VS Code扫描整个项目的错误,而不必手动逐个打开每个文件?

7 个答案:

答案 0 :(得分:16)

VS代码(v1.44)具有实验性功能,该功能允许在TS中使用project wide error reporting。试试看:

// put this line in settings.json
"typescript.tsserver.experimental.enableProjectDiagnostics": true

答案 1 :(得分:8)

想出来。请注意,此答案特定于TypeScript,这是我正在使用的。这是:

确保全局安装打字稿(我刚刚在本地安装了): npm install -g typescript

然后在VS Code中按 Shift + Ctrl + B 。如果您没有设置任务运行器,它将询问您想要什么。我选择了typescript,tasks.json文件将如下所示:

{
    "version": "0.1.0",
    "command": "tsc",
    "isShellCommand": true,
    "args": ["-p", "."],
    "showOutput": "silent",
    "problemMatcher": "$tsc"
}

然后按 Shift + Ctrl + B (或 Shift + Command 在macOS中+ B 将检查整个项目是否存在问题,并将在“问题”面板中报告。

答案 2 :(得分:4)

对于tasks.json中的most recent version,这是正确的json,遵循1.14版中的弃用规定。将此创建为/.vscode/tasks.json

{
    "version": "2.0.0",
    "command": "tsc",
    "type": "shell",
    "args": [
        "-p",
        "."
    ],
    "presentation": {
        "reveal": "silent"
    },
    "problemMatcher": "$tsc"
}

答案 3 :(得分:1)

在vs代码中打开项目后,打开vs代码终端并运行:

node_modules/.bin/tsc --noEmit

答案 4 :(得分:0)

如果您不想全局安装TypeScript,可以执行以下操作:

  1. 将validate-typescript运行脚本添加到./package.json--noEmit表示编译器不会生成任何JavaScript文件。
  2. {
      "scripts": {
        "validate-typescript": "tsc --noEmit"
      }
    }
    
    1. 让VSCode了解/.vscode/tasks.json中的运行脚本。
    2. {
        "version": "2.0.0",
        "tasks": [
          {
            "type": "npm",
            "script": "validate-typescript",
            "problemMatcher": [
              "$tsc"
            ]
          }
        ]
      }
      
      1. 要运行任务,请按F1键并选择“运行任务”,然后选择  npm:validate-typescript'。

答案 5 :(得分:-1)

编辑:由于更新至1.52.0,因此不再起作用。而是将当前项目文件替换为您选择的文件...

===

我已经尝试了所有可以找到的解决方案,并且我认为可以肯定地说答案是:您不能 *

我发现最好的方法仍然是从技术上手动打开每个文件,但至少不是一个一个:

  1. 您不能拖放目录,但是可以选择多个文件(包括目录)并拖放。目录将被忽略,您选择的任何文件都将在选项卡中打开。
  2. 接下来,您需要给每个标签焦点以触发eslint的运行。 (按住下一个选项卡键盘快捷键即可。)

这太可怕了,我求某人证明我错了。

*我还没有找到一种可以手动打开文件的方法。每种方法-实验性vscode功能和tsc任务-都有其自身的缺点。 vscode功能显然是解决方案,但without a way to ignore node_modules, etc.使用起来太痛苦了。

答案 6 :(得分:-1)

更新
我在下面的回答并没有回答最初的问题,但如果你像我一样发现这个线程在 VSCode 中搜索如何在项目范围内打开 // @ts-check 这样你就不需要添加 {{1 }} 到每个文件然后我下面的答案就是你所需要的。我已经搜索并搜索并一直将此线程作为我的最佳结果,所以希望这对其他人也有帮助


我使用的是 vscode 1.52.1 版,答案很简单,就在 vscode 网站上:

https://code.visualstudio.com/docs/nodejs/working-with-javascript#_type-checking-javascript

向下滚动到“使用 jsconfig 或 tsconfig”部分

在您的项目根目录中添加一个 jsconfig.json 并添加 // @ts-check

"checkJs": true

添加后可能需要重启vscode