Skip to content

代码检查

我们使用 TypeScript & ESLint 来检查代码中可能存在的问题。

一些约定

  1. 对于支持 ESLint flat config 的项目,应当优先使用 eslint.config.js 作为配置文件。
  2. 默认将项目代码置于 src 目录下,检查 src 目录下的所有 ts,tsx 文件。
  3. 不推荐开启自动修复,因为它可能会导致一些意外的行为。

关于 TS Type-Only Imports

我们可以使用三个工具来组合处理 Type-Only Imports and Export

  1. 在 TS config 中开启 verbatimModuleSyntax,如果我们没有正确使用 import type 来导入类型就会报错。
  2. 在 ESLint 中开启 @typescript-eslint/no-import-type-side-effects 规则来检查转译后可能出现的 side effect import
    • "@typescript-eslint/consistent-type-imports": "error",
    • "@typescript-eslint/consistent-type-exports": "error",
    • "@typescript-eslint/no-import-type-side-effects": "error",
  3. 在 Prettier 中设置 import type 语句为排序的末尾

安装依赖

大部分依赖都是可选的,根据项目需要安装:

sh
ni -D eslint typescript @typescript-eslint/parser @typescript-eslint/eslint-plugin eslint-config-prettier
sh
ni -D eslint-plugin-unicorn
sh
ni -D @eslint-react/eslint-plugin eslint-plugin-react-hooks
sh
ni -D eslint-plugin-react-refresh @next/eslint-plugin-next eslint-plugin-validate-jsx-nesting eslint-plugin-tailwindcss eslint-plugin-jsx-a11y
sh
ni -D eslint-config-flat-gitignore eslint-flat-config-viewer eslint-define-config @eslint-types/typescript-eslint @eslint-types/unicorn
  1. typescript-eslint
  2. eslint-config-prettier
  3. eslint-plugin-unicorn
  4. @eslint-react/eslint-plugineslint-plugin-react
  5. eslint-plugin-react-hooks
  6. eslint-plugin-jsx-a11y
  7. @next/eslint-plugin-next
  8. eslint-plugin-react-refresh
  9. eslint-plugin-validate-jsx-nesting
  10. eslint-plugin-tailwindcss
  11. eslint-config-flat-gitignore:将 .gitignore 中指定的文件排除在代码检查之外,但一般我们只检查 src 目录下的文件。
  12. eslint-define-config & @eslint-types/define-config-plugin-types:为 ESLint 配置文件添加类型检查。
  13. eslint-flat-config-viewer:可视化查看应用的 ESLint 配置。

TypeScript 配置

TIP

推荐阅读 The TSConfig Cheat Sheet

ESLint 配置

json
{
  "scripts": {
    "lint": "eslint --max-warnings 0 ."
  }
}
json
{
  "eslint.experimental.useFlatConfig": true
}

示例配置文件