前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Eslint配套集成指南【03】

Eslint配套集成指南【03】

作者头像
Snine
发布2022-02-25 13:55:18
1K0
发布2022-02-25 13:55:18
举报
文章被收录于专栏:前端开发笔录前端开发笔录

Eslint使用入门指南【01】 Eslint进阶使用指南【02】

如果你是刚刚开始接触Eslint,在阅读本文前建议可以先学习上面两篇基础文章,在上面,我们已经完成了对一个vue项目的基本引入,现在我们需要集成更多的工具帮助我们的项目更加方便智能,我们一次加入以下工具吧。

本文所需插件及其工具包
  • 【prettier】: 代码风格统一工具
    • 处理eslint不能兼顾的代码风格,对于formatter ruls进行接管统一所有代码风格
  • 【husky】: Git hooks 工具
    • 对git执行的一些命令,通过对应的hooks钩子触发,执行自定义的脚本程序
  • 【lint-staged】: 检测文件插件
    • 只检测git add . 中暂存区的文件,对过滤出的文件执行脚本
  • 【commitlint】: 代码提交检测
    • 检测git commit 内容是否符合定义的规范
  • 【commitizen】:代码提交内容标准化
    • 提示定义输入标准的git commit 内容
prettier

prettier官方文档

prettier是一款代码风格格式化工具,我们在项目中已经用到了Eslint了为什么还要使用这个工具呢?Eslint属于代码质量工具,在对语法和一些规则验证的同时,可以对一些简单的例如单双引号,是否逗号结尾这些语法做检验,但是并没有办法对项目的风格比如代码的缩进,一行最多多少个字符,结尾需不需要再空一行等等的属于风格类型的问题进行修复和规定,所以我们需要prettier来完成对风格的规定。

在一个团队中,对于这种风格的规定显得有些难度,毕竟每个人的风格差异较大,要想做到每个人都遵守这一规定或者风格确实需要很大难度,所以如果你要使用他,那么建议先和团队商议下。

必备工具及插件
  • 编辑器: Vscode studio
  • 插件1: Eslint
  • 插件2:prettier- code formatter
  • 插件3:Prettier Eslint
eslint和prittier是什么关系?

在使用前我们需要先弄清楚这个问题,很多人觉得有了Eslint后不需要再使用Pritter了,实际上不管是谁,他们都是各种Linters通过定义和内置的Rules去检测代码,那么规则又分为两类:

  • Formatting rules 这类规则就属于格式化类的规则,比如max-lenkeyword-spacingsemi等等这些规则,出现这种问题的时候,Eslint会提示你去修改这些规则,而Preiiter则不会管那么多,他会先把你的代码格式化成AST,再按照它的规则进行输出属于它风格的代码。 也就是说,当我们使用preiiter的时候,就不会去违反这些规则了,我们就不需要再去关心这些Formatting rules问题了,Prittier会帮我们去处理掉这些问题。
  • Code-quality rules 这类规则就属于质量类的规则,比如不能用val,不能重复定义变量,定义不使用等等问题,Prettier对这类规则束手无策,这也正是EslintLinters解决的的痛点,因为这些东西在开发阶段可以帮你发现很多低级的问题,将一些低级错误扼杀在摇篮中。
在vue项目中Eslint集成prettier

下载三个依赖包: npm i prettier eslint-config-prettier eslint-plugin-prettier -D

分别是prettiereslint-config-prettiereslint-pluginn-pettier,一个是基础包,其他两个则分别是需要配置在,Eslintextendsplugin中的,在下载完这三个包之后,我们对上个文章的基础配置做点调整

代码语言:javascript
复制
module.exports = {
    "root": true,
    "env": {
        "browser": true,
        "es2021": true,
        "node": true
    },
    "extends": [ "airbnb-base", "plugin:vue/essential", "eslint-config-prettier" ],
    "parserOptions": { 
        "ecmaVersion": "latest",
        "sourceType": "module",
              "ecmaFeatures": {}  
    },
    "plugins": ["vue", "import", "eslint-plugin-prettier"], 
    "rules": {
          'prettier/prettier': 2
    }  // 自定义规则和配置覆盖规则
}

同时加入了一个插件eslint-plugin-import用来解决一些引入路径问题,因为在项目中我们会经常用到**@别名等代表src这种情况,Eslint**不能检测到。

正常情况,我们需要在extendsplugins都加入prettier,在7.0版本之后我们就可以省略掉plugins,在extends引入即可,可以省略掉plugins

但是我发现貌似省略掉eslint-xxx会带来一个问题(Definition for rule 'prettier/prettier' was not found prettier/prettier)这个问题的原因我还没有找到,但是在上面使用全称可以解决掉这个问题,于是配置还是稍作修改,不胜率前缀就没问题了。

注意点

冲突问题: 一般情况,Eslint是拥有自己的formatter rules的,这里大概率会和prettier冲突,prettier拥有大部分的格式化是默认的内置的(他认为应该更少的开放用户自己的配置权限,更多的是用他们定义的风格,所以prettier的配置规则总共也才20多个很少),包括如果我们用了如上airbnb-base这种开源的别人的规则就更大概率存在冲突点,所以eslint-config-prettier就是解决这一问题的,我们在决定使用prettier的时候就说明我们需要prettier全权处理格式问题,我们在extends时要把prettier放在最后,因为后面的配置会覆盖掉前面的,也就是最终保留的规则依然是prettier最大,这里的顺序需要注意,在最后才能保证规则覆盖掉了,同时需要注意,这个时候就别在rules里面再去添加formatter rules了,因为自定义的配置权限最高,如果配置了又会对上面覆盖之后的格式产生冲突(这一点也踩了坑,我以为用了eslint-config-plugin覆盖就可以高枕无忧了,显然并不是这样)

当使用prettier的时候别忘了在rules里面加入这一条规则让其生效'prettier/prettier': 2

后续在rules里面就不要在配置Eslint关于格式化相关的规则了,只配置代码质量方面的规则即可。

想要自动保存就格式化上文有讲过,只需要在项目根目录创建**.vscode文件在里面创建settings.json**文件写入如下

代码语言:javascript
复制
{
  "eslint.validate": ["html", "vue", "javascript", "jsx"],
  "eslint.alwaysShowStatus": true,  // 总是在 VSCode 显示 ESLint 的状态
  "editor.codeActionsOnSave": {
      "source.fixAll.eslint": true, // 自动修复eslint的错误
      "source.fixAll": true,    // 修复prettier错误
  }
}
代码提交规范配套
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022 年 02 月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 本文所需插件及其工具包
  • prettier
    • 必备工具及插件
      • eslint和prittier是什么关系?
        • 在vue项目中Eslint集成prettier
          • 注意点
          • 代码提交规范配套
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档