3分钟搞定drawDB代码质量:ESLint+Prettier配置指南
你是否还在为团队协作时代码格式混乱而头疼?是否经常因为变量命名不规范引发低级bug?本文将带你快速配置drawDB项目的代码质量保障工具链,零基础也能实现"写代码如丝般顺滑"的开发体验。
读完本文你将掌握:
- ESLint语法错误自动检测
- Prettier代码风格一键美化
- 开发工具实时校验配置
- 提交代码自动格式化方案
项目代码质量现状分析
drawDB作为一款浏览器端数据库模式编辑器,其前端代码结构清晰,主要采用React+JavaScript技术栈。项目核心源码位于src/目录,包含超过50个组件文件和20个工具模块。随着项目迭代,亟需建立标准化的代码质量约束机制。
项目目前已包含基础配置文件:
- package.json:项目依赖管理
- vite.config.js:构建工具配置
但尚未集成ESLint和Prettier相关依赖,这导致团队成员代码风格差异较大,尤其在以下场景:
- src/components/EditorCanvas/Table.jsx中的组件 props 命名风格不统一
- src/utils/exportSQL/mysql.js中的函数长度超过200行
- src/hooks/useDiagram.js中的注释缺失关键参数说明
环境准备与依赖安装
首先通过npm安装必要的开发依赖:
npm install --save-dev eslint prettier eslint-plugin-react eslint-plugin-react-hooks eslint-config-prettier eslint-plugin-import vite-plugin-eslint
上述命令会安装:
- ESLint:JavaScript代码检查工具
- Prettier:代码格式化工具
- 相关React生态插件:确保React代码规范检查
- 集成插件:解决ESLint与Prettier的规则冲突
ESLint配置文件创建
在项目根目录创建.eslintrc.js文件:
module.exports = {
env: {
browser: true,
es2021: true,
node: true
},
extends: [
'eslint:recommended',
'plugin:react/recommended',
'plugin:react-hooks/recommended',
'plugin:import/errors',
'prettier'
],
parserOptions: {
ecmaFeatures: {
jsx: true
},
ecmaVersion: 'latest',
sourceType: 'module'
},
plugins: ['react', 'react-hooks', 'import'],
settings: {
react: {
version: 'detect'
}
},
rules: {
'react/prop-types': 'error',
'react/react-in-jsx-scope': 'off',
'no-console': ['warn', { allow: ['warn', 'error'] }],
'import/order': ['error', { 'newlines-between': 'always', 'groups': [['builtin', 'external'], 'internal', ['parent', 'sibling', 'index']] }],
'linebreak-style': ['error', 'unix'],
'quotes': ['error', 'single'],
'semi': ['error', 'always']
}
}
核心规则说明:
- 强制使用PropTypes类型检查:避免组件传参错误
- 禁止console.log但允许warn/error:便于调试但清理生产环境日志
- 强制导入顺序分组:第三方依赖→内部模块→相对路径
- Unix换行符和单引号:统一代码基础风格
Prettier配置文件创建
在项目根目录创建.prettierrc文件:
{
"semi": true,
"singleQuote": true,
"tabWidth": 2,
"trailingComma": "es5",
"printWidth": 100,
"bracketSpacing": true,
"arrowParens": "always"
}
同时创建.prettierignore忽略不需要格式化的文件:
node_modules/
dist/
public/
*.png
*.ico
这些配置将确保:
- 代码自动折行(100字符)
- 箭头函数参数强制括号
- JSON文件末尾逗号自动添加
- 二进制资源不参与格式化
开发工具集成方案
Vite构建集成
修改vite.config.js添加ESLint插件:
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import eslint from 'vite-plugin-eslint'
export default defineConfig({
plugins: [
react(),
eslint({
include: ['src/**/*.js', 'src/**/*.jsx'],
exclude: ['node_modules/**']
})
]
})
VSCode配置
团队成员需在VSCode中安装以下插件:
- ESLint(dbaeumer.vscode-eslint)
- Prettier(esbenp.prettier-vscode)
然后在项目根目录创建.vscode/settings.json:
{
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
},
"eslint.validate": ["javascript", "javascriptreact"]
}
这样配置后,每次保存文件都会自动:
- Prettier格式化代码风格
- ESLint修复可自动修复的语法问题
代码提交自动校验
为确保所有提交到仓库的代码都符合规范,需要配置pre-commit钩子。首先安装必要依赖:
npm install --save-dev husky lint-staged
然后在package.json中添加:
{
"scripts": {
"lint": "eslint src/**/*.{js,jsx}",
"lint:fix": "eslint src/**/*.{js,jsx} --fix",
"format": "prettier --write src/**/*.{js,jsx,css,md}"
},
"husky": {
"hooks": {
"pre-commit": "lint-staged"
}
},
"lint-staged": {
"src/**/*.{js,jsx}": [
"eslint --fix",
"prettier --write"
]
}
}
现在,当执行git commit时会自动对暂存区的代码进行:
- ESLint自动修复
- Prettier格式化
- 若有无法修复的错误将阻止提交
配置效果验证
以src/components/EditorCanvas/Table.jsx为例,配置前可能存在:
- 混合使用单引号和双引号
- 函数参数缺少括号
- 导入语句顺序混乱
配置后保存文件,将自动修复为:
import React from 'react';
import { useContext } from 'react';
import { CanvasContext } from '../../context/CanvasContext';
import { SelectContext } from '../../context/SelectContext';
const Table = ({ id, x, y, width, height, name }) => {
const { scale } = useContext(CanvasContext);
const { selectedItems, setSelectedItems } = useContext(SelectContext);
// 组件逻辑...
return (
<div
className="table-container"
style={{ width, height, transform: `translate(${x}px, ${y}px) scale(${scale})` }}
>
<h3>{name}</h3>
{/* 表格内容 */}
</div>
);
};
export default Table;
常见问题解决方案
ESLint与Prettier规则冲突
如果遇到如"单引号/双引号"规则冲突,确保已安装eslint-config-prettier并在ESLint配置的extends数组最后添加"prettier",这会禁用所有与Prettier冲突的ESLint规则。
自定义规则配置
如需调整规则严格程度,可修改.eslintrc.js的rules部分,例如:
- 降低规则级别:
"react/prop-types": "warn" - 完全禁用规则:
"no-console": "off" - 自定义规则参数:
"max-lines": ["error", 300]
大型文件格式化缓慢
可在.prettierignore中添加大文件路径,或使用/* eslint-disable */临时禁用特定文件的校验。
总结与进阶学习
通过本文配置,drawDB项目已具备基础的代码质量保障能力。建议团队进一步:
- 参考src/data/constants.js建立项目专属ESLint规则
- 研究src/utils/validateSchema.js实现业务逻辑校验
- 探索.github/workflows/配置CI流程自动检查
代码质量保障是持续改进的过程,建议定期审查并优化这些配置,让团队专注于创造价值而非纠结格式细节。立即行动,将这些配置应用到你的项目中,体验"一次配置,终身受益"的开发效率提升!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



