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

yizhihongxing

一、关于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项目中使用多选框的实例代码

    为了让解释更加清晰,我准备从以下几个方面来讲解: 引入vue的核心库和需要的组件 配置数据源和绑定数据 实现多选功能 示例说明 1. 引入vue的核心库和需要的组件 首先,在vue项目中使用多选框,需要引入vue的核心库和需要的组件: <!– 引入vue的核心库 –> <script src="https://unpkg.co…

    Vue 2023年5月27日
    00
  • Vue.component的属性说明

    下面详细讲解一下Vue中的组件属性说明。 Vue.component的属性说明 在Vue中,组件的一些常用属性可以用Vue.component进行定义。下面是Vue.component的主要属性说明: props props属性用于接收父组件传递过来的数据,在组件内部通过 this.$props 访问。它是一个数组或对象,数组中的元素可以是字符串或对象。如果…

    Vue 2023年5月27日
    00
  • 学习Vue组件实例

    学习Vue组件实例需要从以下几个方面入手: 1. 组件实例是什么 在Vue中,组件是可复用的代码块,可以在应用程序中多次使用。每一个组件都是Vue实例,所以它们都有自己的管理状态和生命周期方法。组件实例是一类对象,它们的数据和方法组成了组件的API,同时也定义了组件在页面上的行为和渲染。 当我们使用组件时,会实例化这个组件,得到一个组件实例。我们可以通过访问…

    Vue 2023年5月27日
    00
  • nginx配置wss协议的实现

    要实现Nginx配置wss(WebSocket Secure)协议,需要按照以下步骤进行操作: 前置条件: 已安装 Nginx 1.4.0 或更高版本。 已安装 OpenSSL 1.0.1e 或更高版本。 已安装 PCRE 8.21 或更高版本。 安装 Nginx 参考官方文档或安装向导完成安装。 安装 OpenSSL 和 PCRE 使用官方安装向导或你系统…

    Vue 2023年5月28日
    00
  • vue如何使用driver.js实现项目功能向导指引

    要在Vue项目中使用driver.js实现功能向导指引,可以按照以下步骤操作: 步骤一:安装driver.js 在Vue项目中使用driver.js之前,需要先安装这个库。可以通过运行下面的命令来安装: npm install driver.js –save 这个命令会在项目中安装driver.js和他的依赖。 步骤二:创建driver.js实例 在Vue…

    Vue 2023年5月27日
    00
  • vue3动态组件使用详解

    什么是动态组件 Vue 3 中的动态组件是一种非常方便的技巧,可以根据需要动态选择并呈现组件。实现动态组件可以通过标签的 is 特性来实现。例如,假设我们有这样一个父组件: <template> <div> <component :is="currentComponent"></component…

    Vue 2023年5月28日
    00
  • 优选七个用于vue开发的JS库

    下面是“优选七个用于vue开发的JS库”的完整攻略。 优选七个用于vue开发的JS库 1. Vuex 简介 Vuex是一个专门为Vue.js设计的状态管理库。它集成了Vue的生命周期,同时提供了一个全局数据管理方案,方便开发者集中处理和管理应用程序的状态。 安装 使用npm安装: npm install vuex –save 示例 import Vue f…

    Vue 2023年5月27日
    00
  • Vue学习之axios的使用方法实例分析

    Vue学习之axios的使用方法实例分析 本教程将详细介绍Vue.js中axios的使用方法,并通过实例说明如何使用axios进行数据请求和处理。 一、安装axios 在Vue.js中使用axios前,需要先安装该库。可以通过npm进行安装,命令如下所示: npm install axios 二、axios的基本使用方式 发送GET请求 使用axios发送G…

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