React + Vite + TS 项目中排序 import
使用此方案前:
// import 语句排序混乱,不够直观
// 通过手动调整比较耗费时间和精力
import react from 'react'
import a from './a'
import moment from 'moment'
import './style.css'
import { Modal } from 'antd'
使用此方案后:
// import 语句按照规则排序,清晰明了
import react from 'react'
import moment from 'moment'
import { Modal } from 'antd'
import a from './a'
import './style.css'
使用此方案后的模块引入代码更加直观,利于 Code Review 和保持代码风格一致。
使用此方案前置条件:
- 使用 tsx 语法
- 使用 ESLint 并且代码编辑器中已经安装了 ESLint 插件
实现步骤:
-
安装开发依赖:
-
pnpm install @typescript-eslint/parser eslint eslint-plugin-import eslint-plugin-prettier prettier typescript -D
-
-
配置
eslintrc
文件,如果没有该文件,可以自行在根目录创建.eslintrc.js
文件,然后添加以下规则:-
/* eslint-env node */ module.exports = { parser: "@typescript-eslint/parser", plugins: ["prettier", "import"], extends: ["eslint:recommended"], rules: { "import/order": [ "error", // 错误类型,error => 语法错误报红提示 { // groups 为 import 的顺序 groups: [ // 内置模块 "builtin", // 外部模块 例如:react,antd,material-ui "external", // 内部模块,例如你设置了别名 @ 指向当前 src 文件夹,通过 import A from '@/a' 的方式导入的则匹配 "internal", // 未知的模块 "unknown", // 相对路径模块,例如 ./ 或 ../,这里用中括号包裹是因为可以把它们看做一个排序组,用于下方的插入新行规则 ["parent", "sibling", "index"], // 对象模块,例如 import { SayHi } from './b' "object", // 类型模块 "type", ], // 在每一个排序组中插入新行,用于格式化 "newlines-between": "always", }, ], }, }
-
-
重启当前程序后即可看到,如果 import 没有按照规则填写,则会出现错误提示,此时可以通过手动或者编辑器的快速修复(ctrl + .)修复问题。
https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/order.md
PREVIOUSTypeScript 类型 tips