sv check
sv check
會找出專案中的錯誤和警告,例如
- 未使用的 CSS
- 輔助功能提示
- JavaScript/TypeScript 編譯器錯誤
需要 Node 16 或更高版本。
安裝
您需要在專案中安裝 svelte-check
套件
npm i -D svelte-check
用法
npx sv check
選項
--workspace <路徑>
您的工作區路徑。除了 node_modules
和 --ignore
中列出的目錄外,所有子目錄都會被檢查。
--output <格式>
如何顯示錯誤和警告。請參閱機器可讀輸出。
human
human-verbose
machine
machine-verbose
--watch
保持程序運行並監看變更。
--preserveWatchOutput
防止在監看模式下清除螢幕。
--tsconfig <路徑>
傳遞 tsconfig
或 jsconfig
檔案的路徑。路徑可以是相對於工作區路徑的相對路徑或絕對路徑。這樣做表示只會診斷由組態檔的 files
/ include
/exclude
模式比對到的檔案。這也表示會報告 TypeScript 和 JavaScript 檔案中的錯誤。如果未提供,則會從專案目錄向上尋找下一個 jsconfig
/tsconfig.json
檔案。
--no-tsconfig
如果您只想檢查目前目錄及以下找到的 Svelte 檔案,並忽略任何 .js
/ .ts
檔案(它們將不會進行型別檢查),請使用此選項
--ignore <路徑>
要忽略的檔案/資料夾,相對於工作區根目錄。路徑應以逗號分隔並用引號括起來。範例
npx sv check --ignore "dist,build"
僅在與 --no-tsconfig
一起使用時有效。與 --tsconfig
一起使用時,此選項只會影響監看的檔案,而不是診斷的檔案,診斷的檔案由 tsconfig.json
決定。
--fail-on-warnings
如果提供此選項,警告會導致 sv check
以錯誤碼結束。
--compiler-warnings <警告>
一個用引號括起來,以逗號分隔的 code:behaviour
對,其中 code
是一個編譯器警告碼,而 behaviour
是 ignore
或 error
npx sv check --compiler-warnings "css_unused_selector:ignore,a11y_missing_attribute:error"
--diagnostic-sources <來源>
一個用引號括起來,以逗號分隔的來源清單,這些來源應在您的程式碼上執行診斷。預設情況下,所有來源都會啟用
js
(包括 TypeScript)svelte
css
範例
npx sv check --diagnostic-sources "js,svelte"
--threshold <層級>
篩選診斷結果
warning
(預設)— 顯示錯誤和警告error
— 僅顯示錯誤
疑難排解
請參閱語言工具文件以取得關於預處理器設定和其他疑難排解的更多資訊。
機器可讀輸出
將 --output
設定為 machine
或 machine-verbose
會以機器更容易讀取的方式格式化輸出,例如在 CI 管道中,用於程式碼品質檢查等。
每一行對應到一個新的記錄。行由以單一空格字元分隔的欄組成。每行的第一欄包含一個以毫秒為單位的時間戳記,可用於監控目的。第二欄提供我們「行類型」,根據該類型,後續欄的數量和類型可能會有所不同。
第一行的類型為 START
,並包含工作區資料夾(用引號括起來)。範例
1590680325583 START "/home/user/language-tools/packages/language-server/test/plugins/typescript/testfiles"
後續可能會有多個 ERROR
或 WARNING
記錄。它們的結構相同,並且取決於輸出參數。
如果參數是 machine
,它會告訴我們檔案名稱、起始行和列號以及錯誤訊息。檔案名稱相對於工作區目錄。檔案名稱和訊息都用引號括起來。範例
1590680326283 ERROR "codeactions.svelte" 1:16 "Cannot find module 'blubb' or its corresponding type declarations."
1590680326778 WARNING "imported-file.svelte" 0:37 "Component has unused export property 'prop'. If it is for external reference only, please consider using `export const prop`"
如果參數是 machine-verbose
,它會告訴我們檔案名稱、起始行和列號、結束行和列號、錯誤訊息、診斷的程式碼、程式碼的易於理解的描述以及診斷的易於理解的來源(例如 svelte/typescript)。檔案名稱相對於工作區目錄。每個診斷都表示為以記錄時間戳記為字首的ndjson行。範例
1590680326283 {"type":"ERROR","fn":"codeaction.svelte","start":{"line":1,"character":16},"end":{"line":1,"character":23},"message":"Cannot find module 'blubb' or its corresponding type declarations.","code":2307,"source":"js"}
1590680326778 {"type":"WARNING","filename":"imported-file.svelte","start":{"line":0,"character":37},"end":{"line":0,"character":51},"message":"Component has unused export property 'prop'. If it is for external reference only, please consider using `export
const prop`","code":"unused-export-let","source":"svelte"}
輸出以 COMPLETED
訊息結束,該訊息總結了檢查期間遇到的檔案、錯誤和警告的總數。範例
1590680326807 COMPLETED 20 FILES 21 ERRORS 1 WARNINGS 3 FILES_WITH_PROBLEMS
如果應用程式遇到執行階段錯誤,此錯誤將顯示為 FAILURE
記錄。範例
1590680328921 FAILURE "Connection closed"
鳴謝
- Vue 的 VTI,為
svelte-check
奠定了基礎
常見問題
為什麼沒有選項僅檢查特定檔案(例如,僅檢查已暫存的檔案)?
svelte-check
需要「看到」整個專案才能使檢查有效。假設您重新命名了一個元件屬性,但沒有更新任何使用該屬性的位置 — 使用位置現在都是錯誤,但如果檢查僅在變更的檔案上執行,您將會錯過這些錯誤。