[英]How to make Visual Studio Code check entire project for errors?
我正在使用 VS Code 进行 TypeScript/JavaScript 开发。 当我打开一个文件时,它会检查该文件是否有错误。 问题是如果我正在重构(比如我将一些共享代码移动到新位置或更改名称),它不会向我显示由此导致的错误,直到我打开有问题的文件。 ...因此,如果我想进行大量重构,我必须打开每个文件,让它扫描文件中的错误。
如何让 VS Code 扫描整个项目中的错误,而不必手动逐一打开每个文件?
VS Code (v1.44) 具有实验性功能,允许在 TS 中报告项目范围的错误。 试试看:
// put this line in settings.json
"typescript.tsserver.experimental.enableProjectDiagnostics": true
弄清楚了。 请注意,此答案特定于我正在使用的 TypeScript。 这里是:
确保打字稿是全局安装的(我只是在本地安装了我的显然): npm install -g typescript
然后在 VS Code 中按Shift + Ctrl + B 。 如果您没有设置任务运行器,它会询问您想要什么。 我选择了打字稿,tasks.json 文件将如下所示:
{
"version": "0.1.0",
"command": "tsc",
"isShellCommand": true,
"args": ["-p", "."],
"showOutput": "silent",
"problemMatcher": "$tsc"
}
然后按Shift + Ctrl + B (或 macOS 中的Shift + Command + B )将检查整个项目是否存在问题,它们将在您的“问题”面板中报告。
如果不想全局安装 TypeScript,可以执行以下操作:
在项目本地安装 TypeScript,即yarn add --dev typescript
或npm install --save-dev typescript
。
将 check-types 运行脚本添加到./package.json
。 --noEmit
意味着编译器不会生成任何 JavaScript 文件。
{
"scripts": {
"check-types": "tsc --noEmit"
}
}
/.vscode/tasks.json
。{
"version": "2.0.0",
"tasks": [
{
"type": "npm",
"script": "check-types",
"problemMatcher": [
"$tsc"
]
}
]
}
要运行任务,请按 F1 键并选择“运行任务”,然后选择“npm: check-types”。
如果您将以下几行添加到任务中,按Ctrl+B
将运行它。
"group": { "kind": "build", "isDefault": true }
对于最新版本的tasks.json
这是正确的 json,遵循版本 1.14 中的弃用。 将其创建为/.vscode/tasks.json
{
"version": "2.0.0",
"command": "tsc",
"type": "shell",
"args": [
"-p",
"."
],
"presentation": {
"reveal": "silent"
},
"problemMatcher": "$tsc"
}
在 vs code 中打开项目后,打开 vs code 终端并运行:
node_modules/.bin/tsc --noEmit
eslint: lint whole folder
。 其他解决方案都不适合我。 这是一个tasks.json
,它与 vscode 1.67+ 一起使用。 在 Linux 等上将命令设置为tsc
,在 Windows 上确保运行tsc.cmd
,因为单独的tsc
将尝试运行 bash 脚本并产生以下错误:
The terminal process failed to launch: A native exception occurred during launch (Cannot create process, error code: 193)
"revealProblems": "always"
在presentation
部分显示问题面板完成。
{
"version": "2.0.0",
"tasks": [
{
"label": "tsc: error check project",
"command": "tsc.cmd",
"args": [
"-p",
".",
"--noEmit"
],
"isBackground": false,
"problemMatcher": "$tsc",
"group": {
"kind": "build",
"isDefault": true
},
"presentation": {
"revealProblems": "always",
}
}
]
}
它不是你所要求的 100%,但或者你可以在控制台中运行tsc
并且所有错误都将在那里打印。 对我有用。
编辑:自从更新到 1.52.0 这不再有效。 它将用您选择的内容替换当前的项目文件...
===
我已经尝试了我能找到的所有解决方案,我认为可以肯定地说答案是:你不能*
我发现的最好的仍然是技术上手动打开每个文件,但至少它不是一个一个:
这太可怕了,我恳求有人证明我是错的。
*我还没有找到一种与手动打开文件一样有效的方法。 每种方法——实验性 vscode 功能和 tsc 任务——都有其自身的缺点。 vscode 功能显然是解决方案,但无法忽略 node_modules 等。使用起来太痛苦了。
更新。
我在下面的回答没有回答最初的问题,但如果你像我一样发现这个线程在 VSCode 中搜索如何打开// @ts-check
project-wide 这样你就不需要添加// @ts-check
到每个文件然后我下面的答案就是你所需要的。 我已经搜索并搜索并一直将此线程作为我的最佳结果,所以希望这也能帮助其他人
我使用的是 vscode 1.52.1 版,答案在 vscode 网站上非常简单且正确:
https://code.visualstudio.com/docs/nodejs/working-with-javascript#_type-checking-javascript
向下滚动到“使用 jsconfig 或 tsconfig ”部分
在你的项目根目录中添加一个 jsconfig.json 并添加"checkJs": true
{
"compilerOptions": {
"checkJs": true
},
"exclude": ["node_modules", "**/node_modules/*"]
}
添加后可能需要重新启动 vscode
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.