eslint+prettier+husky+commitlint 项目工程化管理

0 阅读3分钟

关于eslint 和 prettier 对于项目的管理

本次node版本为 v20.18.2

本次预计使用的插件有

  1. eslint 代码检查
  2. perttier 美化代码
  3. husky 提交检查
  4. lint-staged 提交前钩子配置
  5. commitlint 提交文本的检查 例如feat: xxxx

创建demo代码

pnpm create vite

eslint

初始化eslint配置

npx eslint --init

image-20250520160656056.png

创建完成后生成会自动生成eslint.config.js文件

文件内容如下

import js from "@eslint/js" // 校验js规范(推荐)
import globals from "globals"
import tseslint from "typescript-eslint" // 推荐的ts规范
import pluginVue from "eslint-plugin-vue" // 校验vue规范(推荐)
import { defineConfig } from "eslint/config"
​
export default defineConfig([
  {
    files: ["**/*.{js,mjs,cjs,ts,vue}"],
    plugins: { js },
    extends: ["js/recommended"]
  },
  {
    files: ["**/*.{js,mjs,cjs,ts,vue}"],
    languageOptions: { globals: { ...globals.browser, ...globals.node } }
  },
  tseslint.configs.recommended,
  pluginVue.configs["flat/essential"],
  {
    files: ["**/*.vue"], // 校验vue中的ts代码
    languageOptions: { parserOptions: { parser: tseslint.parser } }
  },
  {
    // 那些文件不通过 eslint校验
    ignores: [".css", "*.d.ts"],
    // 细节的校验规则
    rules: {
      semi: "error",
      "no-console":"error"
    }
  }
])
​

ignores 和 rules 自行配置

可以暂时配置一些规则

比如代码中写一些
var a = '123';
​
console.log('xxxxx');
​
​

命令行 执行 eslint

image-20250520162146566.png

代码会提示eslint的报错信息 证明eslint已经生效了

可以运行eslint --fix 代码将按照eslint的规则去适当的修复报错信息

prettier

pnpm install prettier eslint-plugin-prettier eslint-config-prettier   -D
  1. prettier 美化代码
  2. eslint-plugin-prettier 在eslint中使用prettier
  3. eslint-config-prettier 代码合并 如果eslint和prettier格式有冲突 已prettier为准

项目中创建 prettier.config.js 配置一些规则

export default {
  singleQuote: false, // 默认单引号
  semi: false, // 末尾添加分号
  tabWidth: 2, // 缩进
  trailingComma: "none", // 默认没有尾逗号
  useTabs: false, // 默认不使用tab
  endOfLine: "auto", // 默认自动换行
  jsxSingleQuote: false // 默认jsx单引号
}
​

在eslint.config.js 中使用 eslint-config-prettier

import js from "@eslint/js" // 校验js规范(推荐)
import globals from "globals"
import tseslint from "typescript-eslint" // 推荐的ts规范
import pluginVue from "eslint-plugin-vue" // 校验vue规范(推荐)
import { defineConfig } from "eslint/config"
import prettierRecommended from "eslint-plugin-prettier/recommended"
​
export default defineConfig([
  {
    files: ["**/*.{js,mjs,cjs,ts,vue}"],
    plugins: { js },
    extends: ["js/recommended"]
  },
  {
    files: ["**/*.{js,mjs,cjs,ts,vue}"],
    languageOptions: { globals: { ...globals.browser, ...globals.node } }
  },
  tseslint.configs.recommended,
  pluginVue.configs["flat/essential"],
  {
    files: ["**/*.vue"], // 校验vue中的ts代码
    languageOptions: { parserOptions: { parser: tseslint.parser } }
  },
  {
    // 那些文件不通过 eslint校验
    ignores: [".css", "*.d.ts"],
    //  细节的校验规则
    rules: {
      semi: "error"
    }
  },
  prettierRecommended //使用prettier的推荐规则覆盖eslint规则
])

vscode 配置

vscode插件 安装 eslint 插件识别错误的时候可以自动识别 不需要运行 eslint命令行了

vscode插件 安装 prettier prettier eslint

勾选,保存自动格式化

image-20250520162956148.png

设置采用prettier进行格式化代码

image-20250520165221488.png

支持基础的eslint+prettier配置基本完成

editorConfig

可以安装vscode插件editorconfig 用于给编辑器识别文件的基本格式

image-20250520165700993.png

安装后根目录增加文件.editorconfig内容如下

root = true[*]
charset = utf-8
indent_style = space
indent_size = 2
end_of_line = lf

husky

用于git提交代码的时候进行 代码的检查工作 未通过不允许提交

lint-staged 用于 优化对比 第二次提交的时候提交到缓存区 在缓存区对比

步骤

  1. 初始化代码 git init 记得创建.gitignore

  2. pnpm install husky lint-staged -D

  3. 在package.json中配置 代码如下

image-20250520170446031.png

  1. 在git中添加钩子 运行npx husky init 会在根目录增加.husky文件夹

  2. 在.husky中的pre-commit 输入npx lint-staged 这样每次提交之前就会去检测代码

image-20250520171003919.png

commitlint

用于提交代码的文本校测 是否标准 例如feat: xxx doc: xxxx fix: xxxx

  1. 安装插件 pnpm install @commitlint/cli @commitlint/config-conventional -D

  2. 项目根目录下新增配置文件commitlint.config.cjs 内容如下

    module.exports = {
      extends: ["@commitlint/config-conventional"]
    }
    
  1. 在.husky文件夹中新增commit-msg文件(文本文件) 输入

    npx commitlint --edit $1
    

配成成功后提交代码会提示

image-20250520172212917.png

到此为止全部配置完成