`sv 检查` 查找您项目中的错误和警告,例如: * 未使用 CSS * 无障碍提示 * JavaScript/TypeScript 编译器错误 需要 Node 16 或更高版本。 ## 安装 您需要在项目中安装 `svelte-check` 包: ```bash npm i -D svelte-check ``` ## 使用 `npx sv 检查` ## 选项 ### `--工作空间 ` 工作空间路径。除了`node_modules`和`--ignore`中列出的子目录外,所有子目录都将进行检查。 ### `输出` 如何显示错误和警告。参见[机器可读输出](#Machine-readable-output)。 * `人类` * `人-详细` * `机器` * `机器详细` ### `–观察` 保持进程运行并监视更改。 ### `保留监视输出` 防止在监视模式下清除屏幕。 ### `–tsconfig` 传递一个 `tsconfig` 或 `jsconfig` 文件的路径。路径可以是相对于工作区路径的相对路径或绝对路径。这样做意味着只有与配置文件中的 `files`/`include`/`exclude` 模式匹配的文件才会被诊断。这也意味着会报告 TypeScript 和 JavaScript 文件的错误。如果没有提供,将向上遍历项目目录以查找下一个 `jsconfig`/`tsconfig.json` 文件。 ### `–无 tsconfig` 使用此选项仅检查当前目录及其下找到的 Svelte 文件,并忽略任何 `.js`/`.ts` 文件(它们将不会进行类型检查) ### `忽略 ` 文件/文件夹忽略列表,相对于工作区根目录。路径应以逗号分隔并用引号括起来。示例: ```bash npx sv check --ignore "dist,build" ``` 仅当与`--no-tsconfig`结合使用时才有效。当与`--tsconfig`结合使用时,这只会影响监视的文件,而不是诊断的文件,后者由`tsconfig.json`决定。 ### `在警告时失败` 如果提供,警告将导致`sv 检查`以错误代码退出。 ### `--compiler-warnings ` 一个以逗号分隔的引用列表,包含`代码:行为`对,其中`代码`是[编译器警告代码](../svelte/compiler-warnings),而`行为`是`忽略`或`错误`: ```bash npx sv check --compiler-warnings "css_unused_selector:ignore,a11y_missing_attribute:error" ``` ### `--diagnostic-sources ` 一个逗号分隔的源列表,这些源应该对您的代码运行诊断。默认情况下,所有源都处于活动状态: * `js`(包括 TypeScript) * `斯维特` * `css` 示例: ```bash npx sv check --diagnostic-sources "js,svelte" ``` ### `阈值<` 过滤诊断: * `警告`(默认)— 显示错误和警告 * `错误` — 只显示错误 ## 故障排除 [查看语言工具文档](https://github.com/sveltejs/language-tools/blob/master/docs/README.md)以获取有关预处理器设置和其他故障排除的更多信息。 ## 可读机输出 设置 `–输出` 为 `机器` 或 `机器-详细` 将以更易于机器阅读的方式格式化输出,例如在 CI 管道中、进行代码质量检查等。 每行对应一条新记录。行由单个空格字符分隔的列组成。每行的第一列包含一个时间戳(以毫秒为单位),可用于监控目的。第二列提供了“行类型”,根据此类型,后续列的数量和类型可能会有所不同。 第一行是类型为 `START`,并包含工作空间文件夹(用引号括起来)。示例: ``` 1590680325583 START "/home/user/language-tools/packages/language-server/test/plugins/typescript/testfiles" ``` 任何数量的`错误`或`警告`记录可能随后出现。它们的结构相同,取决于输出参数。 如果参数是 `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](https://en.wikipedia.org/wiki/JSON_streaming#Newline-Delimited_JSON) 行。示例: ``` 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"} ``` 输出以一个`完成`消息结束,该消息总结了在检查过程中遇到的文件总数、错误和警告。示例: ``` 1590680326807 COMPLETED 20 FILES 21 ERRORS 1 WARNINGS 3 FILES_WITH_PROBLEMS ``` 如果应用程序在运行时遇到错误,此错误将显示为 `失败` 记录。示例: ``` 1590680328921 FAILURE "Connection closed" ``` ## 致谢 * Vue 的[VTI](https://github.com/vuejs/vetur/tree/master/vti)为`svelte-check`奠定了基础 ## 常见问题解答 ### 为什么没有只检查特定文件(例如只检查暂存文件)的选项? `سوفتلی-چک` 需要查看整个项目以确保检查有效。假设你重命名了一个组件属性,但没有更新任何使用该属性的地方——现在所有使用位置都是错误,但如果只对更改的文件进行检查,你可能会错过它们。