[英]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.