当前位置: 首页 > news >正文

ESLint+Prettier+Vetur 统一Vue项目代码风格

前言

一、为什么要整合Eslint和Prettier?

1、对比Prettier和Linters(eslint/tslint/stylelint)

Linters有两类规则:

  • 格式化规则:如最大长度,没有混合空格和制表符,关键字间距,逗号样式…Prettier减轻了这一类规则的需要!Prettier将以一致的方式从头开始重新打印整个程序,因此程序员不可能再在那里犯错误。* 代码质量规则:如没有未使用的变量,没有额外的绑定,没有隐式全局变量…Prettier无助于这些规则。它们也是Linter提供的最重要的工具,因为它们很可能会从你的代码中捕获真正的bug。### 2、使用Prettier的好处

  • Prettier是“约定大于配置”,各种代码格式相关的规则基本都约定好了,可以省去配置的时间和精力,也可以避免项目中关于代码格式的争论。

  • Prettier是“主厨精选”,这些规则都是精选出来的,质量都很高。

  • Prettier更注重格式化,对格式化的覆盖面比常用的 eslint-config-standard 和 eslint-config-airbnb 还要广。这当中有一些是 Prettier 比 eslint 的样式规则更多,有一些也可能是 eslint 对应的规则没有进行配置。更重要的是对于一些格式,eslint往往只会警告而不会自动格式化,如强制行的最大长度max-len,而Prettier可以自动格式化。因此Prettier是一个更强大的格式化工具。

  • Prettier支持多种语言,使用一个工具,即可统一每一种语言的风格。(prettier支持除js和vue之外的其它文件,使用项目中的prettier依赖和配置格式化其他类型文件,可以保证项目中其它类型文件的格式也统一。这样一来也保证了项目中所有类型的文件都是使用prettier来格式化的。)

二、如何整合Eslint和Prettier?

只需要使用eslint-plugin-prettier和eslint-config-prettier。

eslint-plugin-prettier :

该插件的原理是调用prettier去检查代码然后将错误转化为eslint的错误,这样借助eslint的fix功能,就可以自动格式化代码。

eslint-config-prettier:

它只做一件事就是关闭eslint中所有和prettier有冲突的rules。

最终所需的配置只有

{"extends": [ "some-other-config-you-use", "plugin:prettier/recommended"]
} 

具体实现步骤

一、安装依赖并配置配置文件

需要安装的依赖为

eslint、eslint-plugin-vue:这两个依赖项目基本都有。

prettier、eslint-plugin-prettier、eslint-config-prettier

npm install --save-dev eslint-plugin-prettier
npm install --save-dev --save-exact prettier
npm install --save-dev eslint-config-prettier 

安装完上面的依赖后所需要的所有配置如下

1、eslint配置文件.eslintrc.js为

module.exports = {root: true,parserOptions: {parser: 'babel-eslint',sourceType: 'module'},env: {browser: true,node: true,es6: true,},extends: ['eslint:recommended','plugin:vue/recommended','plugin:prettier/recommended'],// add your custom rules here//it is base on https://github.com/vuejs/eslint-config-vuerules: {}
} 

2、prettier配置文件.prettierrc为

{"trailingComma": "none","tabWidth": 2,"semi": false,"singleQuote": true,"endOfLine": "auto","printWidth": 160
} 

二、配合vscode插件使用

上面安装完依赖并配置完成后其实已经可以通过命令行来使用,但为了更方便地使用可以配合vscode插件。

1、ESLint插件

设置两种情况:

  • Run:打字时(onType)
  • Run --fix:保存时(Code Actions On Save)

针对js和vue文件,格式化本质还是使用prettier依赖。

2、Prettier插件

设为全局默认formatter。

一般有两种使用方式:保存时自动格式化或者手动快捷键

可根据自己喜好全局设置为保存时自动格式化,不过如果设置了要关闭对js和vue文件的保存时自动格式化,因为eslint已经可以调用prettier对js和vue文件进行格式化了。如果不关闭的话,这样就会对js和vue文件格式化两遍,一次是eslint --fix,一次是pretteir格式化。

对除js和vue之外的文件类型,直接使用Prettier插件进行格式化即可,它会使用项目中的prettier依赖和配置,这样也保证了项目成员格式化其它类型文件时格式也是统一的。

3、Vetur插件

eslint-plugin-vue只能对vue文件的和

This plugin allows us to check the <template> and <script> of .vue files with ESLint, as well as Vue code in .js files.

而eslint调用pretteir虽然可以检查

如上图,Vetur中默认就是打开Validation: Style的,而借助eslint-plugin-vue已经可以检查和

下面附上相关的vscode配置:

打开方式:F1——搜settings——Open Settings (JSON)

{/* 格式化相关 */"editor.defaultFormatter": "esbenp.prettier-vscode","editor.formatOnSave": false,// 根据自己喜好设置保存时是否自动格式化// 可以为特定文件类型设置特定的行为"[javascript]": {"editor.formatOnSave": false,},"[vue]": {"editor.formatOnSave": false},// vetur"vetur.validation.script": false,"vetur.validation.template": false,// eslint"editor.codeActionsOnSave": {"source.fixAll.eslint": true// 保存时是否自动fix}
} 

最后

最近还整理一份JavaScript与ES的笔记,一共25个重要的知识点,对每个知识点都进行了讲解和分析。能帮你快速掌握JavaScript与ES的相关知识,提升工作效率。



有需要的小伙伴,可以点击下方卡片领取,无偿分享

相关文章:

  • 《Linux驱动:Nor flash驱动看这一篇就够了》
  • [计算机通信网络]跳(hop) 的概念,tracert指令来查看访问站点经过了多少个路由器
  • SpringBoot RestTemplate详解
  • [代码审计] beecms 4.0 漏洞总结
  • 计算机笔试面试题记录
  • 基于量子计算的无收益标的资产欧式看涨期权定价和delta风险分析
  • 【PCB软件技巧】OrCAD与PADS相互搭配使用的相关要点
  • 精通MySQL之Explain执行计划
  • Docker学习
  • Kubernetes—k8s中Service实例出现污点
  • Chapter4.2:线性系统的根轨迹法
  • kvm快照和克隆
  • 【元胞自动机】基于元胞自动机模拟晶体生长附matlab代码
  • Unity-- Gfx.WaitForPresentOnGfxThread占用CPU过高导致帧率低
  • opencv--GrabCut
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • Git同步原始仓库到Fork仓库中
  • HTTP那些事
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • JavaScript设计模式系列一:工厂模式
  • SOFAMosn配置模型
  • supervisor 永不挂掉的进程 安装以及使用
  • vue 配置sass、scss全局变量
  • Vue 重置组件到初始状态
  • vuex 学习笔记 01
  • webpack+react项目初体验——记录我的webpack环境配置
  • 爱情 北京女病人
  • 利用DataURL技术在网页上显示图片
  • 聊聊hikari连接池的leakDetectionThreshold
  • 漫谈开发设计中的一些“原则”及“设计哲学”
  • 如何实现 font-size 的响应式
  • 软件开发学习的5大技巧,你知道吗?
  • 一道面试题引发的“血案”
  • FaaS 的简单实践
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (6)添加vue-cookie
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (推荐)叮当——中文语音对话机器人
  • (新)网络工程师考点串讲与真题详解
  • (原創) 如何解决make kernel时『clock skew detected』的warning? (OS) (Linux)
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .NET WebClient 类下载部分文件会错误?可能是解压缩的锅
  • .net web项目 调用webService
  • .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?
  • .net 微服务 服务保护 自动重试 Polly
  • .Net接口调试与案例
  • /etc/sudoers (root权限管理)
  • @reference注解_Dubbo配置参考手册之dubbo:reference
  • [ NOI 2001 ] 食物链
  • [2021]Zookeeper getAcl命令未授权访问漏洞概述与解决
  • [2023年]-hadoop面试真题(一)