关于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日

相关文章

  • vue3引入Element-plus的详细步骤记录

    以下是使用vue3引入Element-plus的详细步骤记录: 第一步:安装Element-plus 在项目中使用npm安装Element-plus: npm install element-plus –save 第二步:引入Element-plus 在main.js中引入Element-plus并注册组件: import { createApp } fr…

    Vue 2023年5月28日
    00
  • Vue2响应式系统介绍

    Vue2响应式系统介绍 Vue2的响应式系统是Vue2核心功能之一,它是通过数据劫持和依赖收集来实现的。这种实现方式使得我们不需要手动去操作DOM,只需要操作数据就可以达到更新页面的目的。下面我将详细介绍Vue2响应式系统的实现原理和使用方法。 数据劫持 Vue2的响应式系统是通过数据劫持来实现的。当我们改变Vue实例中的某个数据时,Vue2会自动检测到这个…

    Vue 2023年5月28日
    00
  • Vue3实现全局loading指令的示例详解

    下面是关于“Vue3实现全局loading指令的示例详解”的完整攻略。 简介 在Vue3中,可以使用自定义指令来给DOM元素绑定一些额外的行为,比如全局loading指令。 实现步骤 第一步:创建指令 在Vue3中,我们可以使用app.directive()方法来创建一个指令。下面是一个简单的指令示例,实现了在元素上添加一个loading图标的功能: imp…

    Vue 2023年5月28日
    00
  • Vue中用JSON实现刷新界面不影响倒计时

    使用Vue实现倒计时是常见的需求,但是当页面进行刷新时,原有的倒计时会被重新开始,经常导致用户的混乱和不满。为了解决这个问题,我们可以使用JSON对象存储倒计时的剩余时长,在页面刷新时从JSON对象中读取信息,从而实现刷新界面不影响倒计时的效果。 具体实现步骤如下: 1. 利用Vue的生命周期函数 在Vue中,有一些生命周期函数可以用来监听组件的状态变化,我…

    Vue 2023年5月28日
    00
  • vue data变量相互赋值后被实时同步的解决步骤

    如果在Vue组件中,给data对象中的一个属性赋值为另一个属性,那么这两个属性会相互关联,改变其中一个属性的值,另一个属性的值也会同步改变。这种情况下视图不会更新。因此,我们需要掌握一些技巧,才能有效解决这个问题。 以下是解决步骤: 1. 使用Vue.set()方法 当触发同一个组件中的两个数据属性互相修改时,可以使用Vue.set()方法来解决。Vue.s…

    Vue 2023年5月28日
    00
  • Vue3 – setup script的使用体验分享

    下面我将为你详细讲解“Vue3 – setup script的使用体验分享”的完整攻略。 1. 什么是Vue3 setup script? Vue3的setup script即组件选项中新增的setup函数。这个函数会在组件被创建之前执行,并且返回值将会被传递给模板和其他组件选项中的方法。 setup函数可以方便的访问组件实例,并且可以使用非响应式的引用,避…

    Vue 2023年5月28日
    00
  • webstorm添加*.vue文件支持

    下面就为您详细讲解如何在WebStorm中添加*.vue文件支持的完整攻略。 1. 确认WebStorm版本 首先,需要确保您所使用的WebStorm版本支持.vue文件。目前,WebStorm官方版本16.3及以上均支持.vue文件,如果您使用的WebStorm版本低于此,则需要升级至最新版本。您可以在WebStorm官网上下载更新或升级。 2. 安装Vu…

    Vue 2023年5月28日
    00
  • Vue js如何用split切分并去掉空值和item的空格

    首先,我们需要明确split是字符串的一个方法,Vue js并不提供这个方法,我们可以利用JavaScript语言特性来进行字符串分割和操作。 下面是如何使用split方法来切分字符串并去掉空值和item的空格的完整攻略: 1.使用split方法分割字符串 我们需要对目标字符串使用split方法,将字符串根据指定的分割符分割成一个数组。 var str = …

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