3分钟搞定drawDB代码质量:ESLint+Prettier配置指南

3分钟搞定drawDB代码质量:ESLint+Prettier配置指南

【免费下载链接】drawdb drawDB 是一款免费、简单直观的数据库模式编辑器和 SQL 生成器,能在浏览器中绘制图表、导出 SQL 脚本等,无需注册,零基础也能轻松上手。源项目地址:https://github.com/drawdb-io/drawdb 【免费下载链接】drawdb 项目地址: https://gitcode.com/GitHub_Trending/dr/drawdb

你是否还在为团队协作时代码格式混乱而头疼?是否经常因为变量命名不规范引发低级bug?本文将带你快速配置drawDB项目的代码质量保障工具链,零基础也能实现"写代码如丝般顺滑"的开发体验。

读完本文你将掌握:

  • ESLint语法错误自动检测
  • Prettier代码风格一键美化
  • 开发工具实时校验配置
  • 提交代码自动格式化方案

项目代码质量现状分析

drawDB作为一款浏览器端数据库模式编辑器,其前端代码结构清晰,主要采用React+JavaScript技术栈。项目核心源码位于src/目录,包含超过50个组件文件和20个工具模块。随着项目迭代,亟需建立标准化的代码质量约束机制。

项目目前已包含基础配置文件:

但尚未集成ESLint和Prettier相关依赖,这导致团队成员代码风格差异较大,尤其在以下场景:

环境准备与依赖安装

首先通过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"]
}

这样配置后,每次保存文件都会自动:

  1. Prettier格式化代码风格
  2. 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项目已具备基础的代码质量保障能力。建议团队进一步:

  1. 参考src/data/constants.js建立项目专属ESLint规则
  2. 研究src/utils/validateSchema.js实现业务逻辑校验
  3. 探索.github/workflows/配置CI流程自动检查

代码质量保障是持续改进的过程,建议定期审查并优化这些配置,让团队专注于创造价值而非纠结格式细节。立即行动,将这些配置应用到你的项目中,体验"一次配置,终身受益"的开发效率提升!

【免费下载链接】drawdb drawDB 是一款免费、简单直观的数据库模式编辑器和 SQL 生成器,能在浏览器中绘制图表、导出 SQL 脚本等,无需注册,零基础也能轻松上手。源项目地址:https://github.com/drawdb-io/drawdb 【免费下载链接】drawdb 项目地址: https://gitcode.com/GitHub_Trending/dr/drawdb

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值