eslint+prettier+vue3格式化

2023-11-01

  1. 项目里面安装并配置eslint。

参考官网执行如下命令

npm init @eslint/config 
等价于 
npm install eslint -D  //安装eslint
npx eslint --init //初始化配置eslint

执行后会有一些配置选项,按需选择。如下是按照个人当前项目需要进行的选择,可以作为参考。执行完后项目里面会多出一个.eslintrc.js文件,用于后面eslint的配置。

  1. 配置.eslintrc.js和.prettierrc文件

eslint提供两类规则:检查格式化的规则、检查代码质量的规则。说到底eslint是通过一条条规则限制代码规范,且规则的重点不在代码风格上,因此单凭eslint不能完全统一代码风格。

而prettier只负责代码格式化,不负责管理代码质量,采用prettier来统一代码风格优选。prettier支持配置的参数不多,且所有参数都有默认值,若需更改默认配置,新建.prettierrc.js文件配置具体值,参考prettier config。如下参数说明:

module.exports = {
    printWidth: 80,                    //(默认值)单行代码超出 80 个字符自动换行
    tabWidth: 2,                       //(默认值)一个 tab 键缩进相当于 2 个空格
    useTabs: true,                     // 行缩进使用 tab 键代替空格
    semi: false,                       //(默认值)语句的末尾加上分号
    singleQuote: true,                 // 使用单引号
    quoteProps: 'as-needed',           //(默认值)仅仅当必须的时候才会加上双引号
    jsxSingleQuote: true,              // 在 JSX 中使用单引号
    trailingComma: 'all',              // 不用在多行的逗号分隔的句法结构的最后一行的末尾加上逗号
    bracketSpacing: true,              //(默认值)在括号和对象的文字之间加上一个空格
    jsxBracketSameLine: true,          // 把 > 符号放在多行的 JSX 元素的最后一行
    arrowParens: 'avoid',              // 当箭头函数中只有一个参数的时候可以忽略括弧
    htmlWhitespaceSensitivity: 'ignore', // vue template 中的结束标签结尾尖括号掉到了下一行
    vueIndentScriptAndStyle: false,    //(默认值)对于 .vue 文件,不缩进 <script> 和 <style> 里的内容
    embeddedLanguageFormatting: 'auto', //(默认值)允许自动格式化内嵌的代码块
};

问题1:eslint和prettier都可以管控代码风格,此时可能会出现冲突。目前已经有了非常成熟的解决方案,即 eslint-config-prettier + eslint-plugin-prettier

  • eslint-config-prettier:关闭eslint中与prettier相互冲突的规则。

  • eslint-plugin-prettier:eslint使用prettier规则来美化代码风格。

在 .eslintrc.js中extends的最后添加一个配置,此时prettier和eslint便可以无冲突协作,保存时候也能自动修复并格式化代码了。

extends: [
    'plugin:vue/vue3-recommended',
    'airbnb-base',
    'plugin:@typescript-eslint/recommended',
    'plugin:prettier/recommended', // 增加的配置
],

问题2:eslint解析.vue 文件中的template无效。eslint-plugin-vue是对.vue 文件进行代码校验的插件,插件一些扩展如下。个人项目里面用的vue3,选用的plugin:vue/vue3-recommended。

plugin:vue/base:基础
plugin:vue/essential:预防错误的(用于 Vue 2.x)
plugin:vue/recommended:推荐的,最小化任意选择和认知开销(用于 Vue 2.x);
plugin:vue/strongly-recommended:强烈推荐,提高可读性(用于 Vue 2.x);
plugin:vue/vue3-essential:(用于 Vue 3.x)
plugin:vue/vue3-strongly-recommended:(用于 Vue 3.x)
plugin:vue/vue3-recommended:(用于 Vue 3.x)

配置eslint-plugin-vue插件和extends后,template校验还是会失效,此时需要再配置和eslint-plugin-vue插件对应的解析器vue-eslint-parser。vue-eslint-parser能解析 template的内容,但不会解析JS,因此需要再配置一个解析器@typescript-eslint/parser

  • vue-eslint-parser:配置在外面,eslint能解析<template>标签中的内容

  • @typescript-eslint/parser:配置在parserOptions中用来解析vue文件中<script>标签中的代码。

具体配置如下:

parser: 'vue-eslint-parser', // 解析<template>标签中的内容
 parserOptions: {
    ecmaVersion: 12,
    parser: '@typescript-eslint/parser', // 解析vue文件中<script>标签内容
    sourceType: 'module',
},

问题3: 可以采用如下命令检测.eslintrc.js文件中是否有未安装的插件,确保插件全部安装后eslint才可起作用。

npx eslint 文件名
  1. 配置.editorconfig文件

.editorConfig专注于统一编辑器编码风格配置,对多种类型的单文件进行简单的格式化。它提供的配置参数很少,具体如下所示。

# 已经是顶层配置文件,不必继续向上搜索
root = true
[*]
# 编码字符集
charset = utf-8
# 缩进风格是空格
indent_style = space
# 一个缩进占用两个空格,因没有设置tab_with,一个Tab占用2列
indent_size = 2
# 换行符 lf
end_of_line = lf
# 文件以一个空白行结尾
insert_final_newline = true
# 去除行首的任意空白字符
trim_trailing_whitespace = true
[*.md]
insert_final_newline = false
trim_trailing_whitespace = false

可以看到 .editorConfig 和 .prettierrc会存在一些重复的配置,比如都提供缩进的配置参数。建议在实际应用中将二者参数设置为一致。一些注意事项如下:

  • 不同编辑器的配置存在差异,vscode 这类编辑器,需要自行安装 editorconfig 插件

  • 编辑器的行为会与 .editorconfig 文件中定义的一致,其优先级比编辑器自身的设置要高。比如编辑器vscode中,当.editorConfig中indent_size和settings.json中editor.tabSize同时配置Tab空格数, indent_size优先生效。

  • .editorconfig配置缩进时,优先级没有.eslintrc.js文件中的高,但两者并不冲突,配合使用可以使代码风格更加优雅。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

eslint+prettier+vue3格式化 的相关文章

随机推荐

  • Linux服务字符集--locale命令

    在查看Tomcat日志中 会发现中文乱码 乱码的原因就是字符集问题 在 Linux 中 可以使用 locale 命令查看当前系统的字符集 该命令输出当前系统所使用的语言环境信息 包括地域 编码等 执行以下命令 locale 输出结果可能类似
  • 使用Spring Initializer快速创建Spring Boot项目

    默认生成的Spring Boot项目 主程序已经生成好了 resources文件夹中目录结构 static 保存所有的静态资源 templates 保存所有的模板页面 默认不支持JSP页面 可以使用模板引擎 freemarker等 appl
  • github上的文档结构学习

    开源项目目录规范 此为前端开发团队遵循和约定的开源项目目录规范 意在实现开源项目目录结构的一致性 说明 文档中使用的关键字 MUST MUST NOT REQUIRED SHALL SHALL NOT SHOULD SHOULD NOT R
  • RocketMQ发送接收项目实战+对cos或者oss服务上的pdf文件和图片加水印

    使用mq的原因 因为项目中文件上传比较多 需要使用mq分担当前系统线程压力 所以单独使用一个服务来处理文件上传 加快文件上传速度的同时也缓解了当前服务的处理压力 核心服务1 一个项目 发送mq GeneralFileEvent 需要发送给m
  • Qt+gsoap调用WebService

    版权声明 本文为原创作品 请尊重作者的劳动成果 转载必须保持文章完整性 并以超链接形式注明原始作者 tingsking18 和主站点地址 方便其他朋友提问和指正 Qt gsoap调用WebService 1 前言 Qt本身给我们提供了调用W
  • C#系列之ref与out

    目录 1 学习ref与out的原因 2 ref与out的使用 ref的使用 out的使用 3 ref和out的区别 1 学习ref与out的原因 为了解决里面改变外面也改变的问题 使用它们 在函数内部传入的内容里面一旦改变 外面也会跟着改变
  • 连接服务器失败请检查配置文件,连接服务器失败请检查网络

    连接服务器失败请检查网络 内容精选 换一换 当连接目的端服务器失败时 提示 sms 1807 sms 2802 无法连接目的虚拟机 请检查目的虚拟机IP是否可达 或者8899 8900端口是否开放 如下图所示 windows系统迁移时 目的
  • 要做接口并发性能测试,总得先学会分析吧!

    引言 这篇是我3月份在公司内部做的技术分享内容 由于我在公司内部分享的内容较多以及一些特殊性 我摘取了接口并发测试从设计思路整理 测试方案设计 设计分析 代码编写这套流程 我不会承认我把40多页PPT的内容都放在这篇博文里 不管是在内部技术
  • 从零开始制作游戏外挂

    一 什么叫外挂 现在的网络游戏多是基于Internet上客户 服务器模式 服务端程序运行在游戏服务器上 游戏的设计者在其中创造一个庞大的游戏空间 各地的玩 家可以通过运行客户端程序同时登录到游戏中 简单地说 网络游戏实际上就是由游戏开发商提
  • 【专题】我们常用的功能自动化测试工具——Selenium篇

    导语 Selenium也是一个用于Web应用程序测试的工具 Selenium测试直接运行在浏览器中 就像真正的用户在操作一样 支持的浏览器包括IE Mozilla Firefox Mozilla Suite等 这个工具的主要功能包括 测试与
  • 备赛电赛学习硬件篇(二):电源板电路设计

    目录 一 接口 二 稳压部分 三 防反接电路 四 电流与线宽 一 接口 1 输入接口 要准
  • 调试osgEarth(33)分页瓦片卸载器子节点的作用-(3)渲染遍历的帧号和时间设置-TerrainCuller赋值给可渲染图层--TerrainRenderData-Layer

    继续调试 再回顾下Layer类的成员变量 就是说 初始化时调用init 添加到Map上时 setReadOptions gt open gt addedToMap 移除时用removedFromMap 总结下 Layer是个基类 有自己的唯
  • MATLAB实现doc文件的批量改名

    对于一个文件夹中的多个doc文件进行批量改名 下图中是笔者从学生那里收上来的记录表 说了要统一命名也没人听 我又懒得一个个改 只好费点时间编程了 两种实现的思路 一是从旧文件名中选取特定位置的字符 组成新的文件名 要求文件名有固定的位置 比
  • Swift之 ? 和 !

    04 June 2014 Swift语言使用var定义变量 但和别的语言不同 Swift里不会自动给变量赋初始值 也就是说变量不会有默认值 所以要求使用变量之前必须要对其初始化 如果在使用变量之前不进行初始化就会报错 var stringV
  • 产品设计七大定律

    Alan Cooper 交互设计之父 除非有更好的选择 否则就遵从标准 许多设计准则都基于人类心理学 人们如何感知 学习 推理 记忆 以及把意图转换为行动 菲茨定律 菲茨定律用来预测某点到目标位置所需要时间的数学模型 在页面中 大而近的目标
  • 共模电感

    一 背景 关电源会产生以下两类噪声 共模和差模 差模噪声 图a 的传播途径和输入电流相同 共模噪声 图b 表现为彼此相等且同相的噪声 其传播途径经绕组与地线相连 本文主要讲解抑制共模的共模电感的磁芯选择 二 共模电感的抑制原理 电感器对高频
  • Qt5 Qstring::asprintf(“%.3f“, a)精度问题,有时四舍五入,有时直接丢弃。

    问题描述 提示 这里描述具体问题 在Qt5 12开发软件时发现 用Qstring asprintf 3f a 这个函数做精度控制 有时直接四舍五入 有时直接将精度后面的数据拿掉 例如 Qstring asprintf 3f a 四舍五入 f
  • 机器学习算法 决策树

    文章目录 一 决策树的原理 二 决策树的构建 2 1 ID3算法构建决策树 2 2 C4 5 算法树的构建 2 3 CART 树的创建 三 决策树的优缺点 一 决策树的原理 决策树 Decision Tree 是一种非参数的有监督学习方法
  • 10.12黄金原油资讯直通车,黄金原油区间震荡后市操作建议

    黄金消息面与技术面解析 消息面 本周显然又是一个 超级周 数据方面 将迎来中国CPI PPI数据和进出口数据 美国将公布CPI PPI 零售销售等重磅经济数据 风险事件方面 OPEC EIA和IEA都将公布原油市场月度报告 美联储多位票委和
  • eslint+prettier+vue3格式化

    项目里面安装并配置eslint 参考官网执行如下命令 npm init eslint config 等价于 npm install eslint D 安装eslint npx eslint init 初始化配置eslint 执行后会有一些配