关于eslint+prettier+husky的配置及说明

一、关于eslint+prettier+husky

eslint、prettier和husky都是在前端开发中常用的工具,具体的应用场景如下:

  • eslint:用于静态代码检查,检查JavaScript代码是否符合规范。
  • prettier:代码格式化工具,可以定义代码风格规范,自动格式化代码。
  • husky:Git钩子工具,可以在Git提交、推送前运行一些脚本,可以在代码提交前做一些必要的检查和处理工作。

配置eslint+prettier+husky的目的是为了提高代码的可读性、可维护性和最终的代码质量,以下是具体的配置和说明。

二、配置eslint+prettier+husky

首先,我们需要安装三个工具:eslint、prettier和husky。

npm install eslint prettier husky --save-dev

然后,我们需要在项目中创建一个.eslintrc文件,用于在VSCode编辑器中使用eslint插件时生效。

{
  "extends": ["eslint:recommended", "prettier"], // 继承eslint的推荐规则和prettier的规则
  "plugins": ["prettier"],
  "rules": {
    "prettier/prettier": "error" // 将prettier视为一个eslint插件并报出错误
  },
  "parserOptions": {
    "ecmaVersion": 2018, // 指定使用的ECMAScript版本
    "sourceType": "module" // 指定使用的模块化标准
  },
  "env": {
    "browser": true, // 指定环境为浏览器环境
    "node": true // 指定环境为Node.js环境
  }
}

上述配置文件中,我们指定了使用eslint的推荐规则和prettier的规则,并将prettier视为一个eslint插件。同时,我们还指定了使用ES2018的语法和使用浏览器和Node环境。用户可以根据自己的情况修改这些设置。

接下来,我们需要在项目中添加一个.prettierrc文件,用于配置prettier的规则。

{
  "printWidth": 120, // 每行的最大字符数
  "tabWidth": 2, // 缩进的空格数
  "useTabs": false, // 是否使用制表符进行缩进
  "semi": true, // 是否在语句末尾添加分号
  "singleQuote": true, // 是否使用单引号
  "quoteProps": "as-needed", // 对象字面量属性的引号使用规则
  "jsxSingleQuote": true, // JSX中是否使用单引号
  "trailingComma": "none", // 是否使用行末逗号
  "bracketSpacing": true, // 对象字面量括号前后是否有空格
  "jsxBracketSameLine": false, // JSX闭合括号是否另起一行
  "arrowParens": "avoid", // 箭头函数参数是否带括号
  "rangeStart": 0, // 限制文件格式化的起始行
  "rangeEnd": Infinity, // 限制文件格式化的结束行
  "proseWrap": "preserve", // 是否换行
  "requirePragma": false, // 标记代码是否格式化
  "insertPragma": false, // 启用标记代码的打印宽度
  "overrides": [] // 自定义文件类型的规则
}

上述配置文件中,我们指定了使用单引号、不使用行末逗号等规则,用户可以根据自己的需求修改这些设置。

最后,我们需要在package.json文件中定义husky钩子的配置。

{
  "scripts": {
    // 运行eslint检测
    "lint": "eslint --fix --ext .js,.vue src/",
    // 运行prettier格式化代码
    "format": "prettier --write 'src/**/*.{js,vue,html}'",
  },
  "husky": {
    "hooks": {
      "pre-commit": "npm run lint && npm run format" // 在提交前运行lint和format命令
    }
  }
}

上述配置文件中,我们定义了两个脚本lint和format,用于分别运行eslint和prettier的检测和格式化。同时,我们在husky的pre-commit钩子中,同时运行lint和format命令。

三、示例说明

为了更好地理解eslint、prettier和husky的应用,下面给出两个例子进行说明。

例子一:检查Vue项目

假设我们正在开发一个Vue项目,并且需要检查代码是否符合规范。首先,我们需要在Vue项目中安装eslint、prettier和husky。

npm install eslint prettier husky --save-dev

然后,我们需要在项目中创建一个.eslintrc文件,用于设置检查规则。

{
  "extends": ["plugin:vue/vue3-recommended", "eslint:recommended", "prettier"],
  "plugins": ["vue", "prettier"],
  "rules": {
    "prettier/prettier": "error"
  },
  "parserOptions": {
    "parser": "babel-eslint",
    "ecmaVersion": 2018,
    "sourceType": "module"
  },
  "env": {
    "browser": true,
    "node": true
  }
}

这里我们使用了Vue官方提供的vue3-recommended规则,并且使用了prettier规则。我们还指定了使用Babel解析器。

接着,我们需要在项目中添加一个.prettierrc文件。

{
  "printWidth": 120,
  "tabWidth": 2,
  "useTabs": false,
  "semi": true,
  "singleQuote": true,
  "quoteProps": "as-needed",
  "jsxSingleQuote": true,
  "trailingComma": "none",
  "bracketSpacing": true,
  "jsxBracketSameLine": false,
  "arrowParens": "avoid",
  "rangeStart": 0,
  "rangeEnd": Infinity,
  "proseWrap": "preserve",
  "requirePragma": false,
  "insertPragma": false,
  "overrides": [
    {
      "files": "*.md",
      "options": {
        "tabWidth": 4
      }
    }
  ]
}

这里我们指定了一些格式化相关的规则,并且可以针对不同类型的文件进行自定义的配置,这里我们针对Markdown文件进行了缩进规则的修改。

最后,我们需要在package.json文件中定义husky的钩子。

{
  "scripts": {
     "lint": "eslint --fix --ext .js,.vue src/",
     "format": "prettier --write 'src/**/*.{js,vue,html,css}, *.md'"
  },
  "husky": {
    "hooks": {
      "pre-commit": "npm run lint && npm run format"
    }
  }
}

这里我们定义了pre-commit钩子,可以在每次提交代码时自动检查和格式化代码。

例子二:检查React项目

假设我们正在开发一个React项目,并且需要检查代码是否符合规范。我们可以按照如下流程进行配置。

首先,我们需要在React项目中安装eslint、prettier和husky。

npm install eslint prettier husky --save-dev

然后,我们需要在项目中创建一个.eslintrc文件,用于设置检查规则。

{
  "parser": "babel-eslint",
  "env": {
    "browser": true,
    "es6": true
  },
  "extends": ["airbnb", "plugin:prettier/recommended"],
  "plugins": ["prettier"],
  "rules": {
    "prettier/prettier": "error",
    "react/jsx-filename-extension": [1, { "extensions": [".js", ".jsx"] }],
    "import/prefer-default-export": "off"
  },
  "globals": {
    "React": true
  }
}

这里我们使用了Airbnb提供的规则,并且使用了prettier规则。我们还针对React相关的规则进行了一些更改。

接着,我们需要在项目中添加一个.prettierrc文件。

{
  "tabWidth": 2,
  "useTabs": false,
  "semi": true,
  "singleQuote": true,
  "quoteProps": "as-needed",
  "jsxSingleQuote": true,
  "trailingComma": "none",
  "bracketSpacing": true,
  "jsxBracketSameLine": false,
  "arrowParens": "avoid",
  "rangeStart": 0,
  "rangeEnd": Infinity,
  "proseWrap": "preserve",
  "requirePragma": false,
  "insertPragma": false,
  "overrides": []
}

这里我们进行了一些格式化相关的规则设置。

最后,我们需要在package.json文件中定义husky的钩子。

{
  "scripts": {
     "lint": "eslint --fix --ext .js,.jsx src/",
     "format": "prettier --write 'src/**/*.{js,jsx,html,css}'"
  },
  "husky": {
    "hooks": {
      "pre-commit": "npm run lint && npm run format"
    }
  }
}

这里我们定义了pre-commit钩子,可以在每次提交代码时自动检查和格式化代码。

以上就是关于eslint、prettier和husky的配置和说明。通过这些工具的合理使用,可以为我们的前端开发带来很大的便利。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:关于eslint+prettier+husky的配置及说明 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • Vue中$on和$emit的实现原理分析

    Vue中$on和$emit的实现原理分析 介绍 在Vue中,$on和$emit是两个非常常用的方法,用于实现事件的监听和触发。$on方法用于监听事件,$emit方法用于触发事件。本文将对Vue中$on和$emit的实现原理进行分析和讲解。 $on的实现原理 $on方法用于监听事件,其实现原理很简单,就是将事件名和事件处理函数保存到一个对象中。在触发事件时,遍…

    Vue 2023年5月28日
    00
  • Vue实现带进度条的文件拖动上传功能

    下面是Vue实现带进度条的文件拖动上传功能的完整攻略: 准备工作 安装Vue.js相关依赖 npm install vue vue-resource 引入Vue相关依赖 <script src="https://cdn.jsdelivr.net/npm/vue"></script> <script src=&…

    Vue 2023年5月28日
    00
  • 3分钟带你快速认识Vue3中的v-model

    3分钟带你快速认识Vue3中的v-model Vue3中的v-model相比Vue2版本有了一些改动,新版本中v-model被封装成一个Directive,这个Directive能够更好的协调子组件之间双向绑定的问题。 什么是v-model v-model指令的职责是在表单元素和组件上创建双向绑定。在Vue2版本中,v-model只能对表单元素进行使用。而在…

    Vue 2023年5月28日
    00
  • 编写Vue项目,如何给数组的第一位添加对象数据

    要在Vue项目中给数组的第一位添加对象数据,可以使用以下步骤: 获取数组 在Vue项目中,可以通过引入Vue库的方式来获取数组。假设需要操作的数组名为arr,可以使用以下方式获取: let arr = this.arr; 构造对象数据 假设需要添加的对象数据为obj,可以使用以下方式进行构造: let obj = { name: "张三"…

    Vue 2023年5月28日
    00
  • JavaScript函数封装随机颜色验证码(完整代码)

    让我来详细讲解“JavaScript函数封装随机颜色验证码(完整代码)”的完整攻略。 题目描述 我们需要开发一个可以生成随机颜色的验证码的JavaScript函数,并将其封装成一个可复用的代码。 解决方案 我们可以通过以下步骤来实现该功能: 第一步:定义变量和函数 首先,我们需要定义一些变量和函数,如下所示: var code, codeLength = 6…

    Vue 2023年5月28日
    00
  • Vue Element前端应用开发之常规的JS处理函数

    Vue Element前端应用开发之常规的JS处理函数 在Vue Element前端应用开发中,JS处理函数是非常常见的。下面给出了一些常见JS处理函数的使用方法和示例。 1. 数组的过滤函数filter() 简介 filter() 是数组的一个常用方法,它返回一个新的被过滤后的数组,原数组不发生变化。 filter() 接受一个回调函数作为参数,该回调函数…

    Vue 2023年5月28日
    00
  • vue中如何实现变量和字符串拼接

    在Vue中实现变量和字符串拼接,最常用的方式就是使用插值表达式和模板字符串。 插值表达式 使用双大括号{{}}将变量与字符串拼接起来,如下示例: <template> <div> <p>{{ message }} World!</p> </div> </template> <scr…

    Vue 2023年5月27日
    00
  • 浅谈vue的第一个commit分析

    下面我来详细讲解”浅谈vue的第一个commit分析”的完整攻略。 1. 了解Vue.js的号召与目标 Vue.js起源于2013年,是由一名华人开发者尤雨溪(Evan You)所创建的。他旨在创造一款简单、灵活的 JavaScript 框架用于构建用户界面。Vue.js也称为渐进式JavaScript框架,具有轻量级、易上手、高效渲染等特点。Vue.js近…

    Vue 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部