ESLint+Prettier+Husky+Lint-staged配置

ESLint+Prettier

1. 引入 ESLint

ESLint 是 JavaScript 和 TypeScript 项目的标准代码检查工具。

安装 ESLint
npm install eslint --save-dev
配置文件示例

.eslintrc.js 文件的 Vue 项目配置示例:

module.exports = {
  root: true,
  env: {
    node: true,
  },
  extends: ['plugin:vue/essential', 'eslint:recommended', 'plugin:prettier/recommended'],
  parserOptions: {
    parser: '@babel/eslint-parser',
  },
  rules: {
    // 自定义规则
    'vue/multi-word-component-names': 'off', // vue组件name无需用横杠连接
    'no-unused-vars': ['error', { argsIgnorePattern: '^_' }], // 关闭未使用变量规则
    'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
    'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
  },
}

2. 引入 Prettier

Prettier 是一款代码格式化工具,可以与 ESLint 配合使用。

安装 Prettier
npm install prettier eslint-config-prettier eslint-plugin-prettier --save-dev
配置 Prettier

新增 .prettierrc 文件,设置格式化规则:

module.exports = {
  // 一行最多 120 字符
  printWidth: 120,
  // 使用 4 个空格缩进
  tabWidth: 2,
  // 不使用 tab 缩进,而使用空格
  useTabs: false,
  // 行尾需要有分号
  semi: false,
  // 使用单引号代替双引号
  singleQuote: true,
  // 对象的 key 仅在必要时用引号
  quoteProps: 'as-needed',
  // jsx 不使用单引号,而使用双引号
  jsxSingleQuote: false,
  // 末尾使用逗号
  trailingComma: 'all',
  // 大括号内的首尾需要空格 { foo: bar }
  bracketSpacing: true,
  // jsx 标签的反尖括号需要换行
  jsxBracketSameLine: false,
  // 箭头函数,只有一个参数的时候,也需要括号
  arrowParens: 'always',
  // 每个文件格式化的范围是文件的全部内容
  rangeStart: 0,
  rangeEnd: Infinity,
  // 不需要写文件开头的 @prettier
  requirePragma: false,
  // 不需要自动在文件开头插入 @prettier
  insertPragma: false,
  // 使用默认的折行标准
  proseWrap: 'preserve',
  // 根据显示样式决定 html 要不要折行
  htmlWhitespaceSensitivity: 'css',
  // 换行符使用 lf
  endOfLine: 'auto',
  // 强制元素属性换行
  singleAttributePerLine: false,
}

3. 安装和配置 Lint-Staged + Husky

这些工具可以在提交代码前进行自动校验。

安装依赖
npm install lint-staged husky --save-dev
初始化 Husky

运行以下命令,初始化 Husky 并创建 .husky 目录:

npx husky-init
配置 Git 钩子
  1. 添加 pre-commit 钩子
    通过以下命令添加一个 pre-commit 钩子,用于在提交之前运行特定脚本:
npx husky add .husky/pre-commit "npm test"

该命令会在.husky目录下生成一个名为pre-commit的文件,内容如下:

#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"

npx test

npm test用于集成测试和单元测试

2.在 package.json 文件中添加以下内容:

{
"husky": {
    "hooks": {
      "pre-commit": "lint-staged"
    }
  },
  "lint-staged": {
    "*.js": "eslint --fix",
    "*.ts": "eslint --fix",
    "*.vue": "eslint --fix",
    "*.json": "prettier --write",
    "*.css": "prettier --write"
  }
}

3.将 lint-staged 集成到 pre-commit 钩子中:

npx husky add .husky/pre-commit "npx lint-staged"

注意:在执行上述命令时,终端提示:

husky - add command is DEPRECATED

导致pre-commit文件中并未添加npx lint - staged,故手动添加该内容

#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"

npx lint-staged
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容