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

【开发问题记录】eslint9 中 eslint 和 prettier冲突

文章目录

    • 1、引言
    • 2、问题复现
    • 3、问题修复
    • 4、注意
    • 5、eslint-plugin-prettier/recommended 与自己的默认规则,冲突解决

1、引言

eslintprettier 这俩都是在前端工程化中不可缺少的东西,但这俩,在一块运行的时候,总会有点问题

Eslint功能

  • 对js语法检测、限制和修复
  • 对代码风格进行格式化,不能对css、less等格式化

Prettier

  • Prettier不可以对任何语法检测、限制和修复
  • 但是可以 美化很多格式的代码,包括js、jsx、ts、json、css、less、scss、html、vue等

这俩就会重叠的地方, 语法检测、限制、修复

2、问题复现

eslint 的版本如下

"eslint": "^9.14.0",

在工程化项目中,安装了 eslintprettier , 在 prettier 中开启,字符串用单引号的规则;在 eslint 中 开启,字符串用 双引号的规则

…prettierrc 文件内容

"singleQuote": true, 核心是这个,字符串开启单引号

{
  "useTabs": false,
  "tabWidth": 2,
  "printWidth": 80,
  "singleQuote": true,
  "trailingComma": "none",
  "bracketSpacing": true,
  "semi": false
}

eslint.config.js 文件内容

import globals from 'globals'
import pluginJs from '@eslint/js'
import tseslint from 'typescript-eslint'
import pluginVue from 'eslint-plugin-vue'

/** @type {import('eslint').Linter.Config[]} */
export default [
  { files: ['**/*.{js,mjs,cjs,ts,vue}'] },
  { languageOptions: { globals: { ...globals.browser, ...globals.node } } },
  // js 推荐的配置
  pluginJs.configs.recommended,
  // ts 推荐的配置
  ...tseslint.configs.recommended,
  ...pluginVue.configs['flat/essential'],
  {
    files: ['**/*.vue'],
    languageOptions: { parserOptions: { parser: tseslint.parser } }
  },

  {
    rules: {
      'no-console': 'error',
      '@typescript-eslint/no-unused-vars': 'error',
      'vue/multi-word-component-names': 'off', // 关闭 vue组件名称必须是多词的校验
      '@typescript-eslint/no-explicit-any': 'off', // 关闭 不能出现 any 校验
      quotes: ['error', 'double']
    }
  }
]

这个时候就会出现问题,到底是以 eslint 为准 还是以 prettier 为准呢

在这里插入图片描述

3、问题修复

  1. eslint-config-prettier :这是一个 ESLint 配置规则的包,它将关闭与 Prettier 冲突的 ESLint 规则。

  2. eslint-plugin-prettier :这是一个 ESLint 插件,它将 Prettier 应用到 ESLint 中。它会使用 Prettier 来格式化代码,并将格式化结果作为 ESLint 的一项规则来检查代码。使用 eslint-plugin-prettier 可以在代码检查的同时,自动格式化代码,使其符合 Prettier 的规则。

保存的时候,其实会用 prettier 美化代码,然后就导致,eslint 的 双引号报错

1、安装 eslint-plugin-prettier

pnpm add eslint-plugin-prettier -D

2、修改 eslint.config.js 配置文件
在这里插入图片描述

import eslintPluginPrettier from 'eslint-plugin-prettier/recommended'
  
eslintPluginPrettier, // 解决 prettier 和 eslint 的冲突,比如 eslint 里面是 开启 双引号,prettier 里面开启单引号

主要是增加这两行

3、在根目录新增 prettier.config.js 文件,把 prettier 的配置信息放到里面去

export default {
  useTabs: false,
  tabWidth: 2,
  printWidth: 80,
  singleQuote: true,
  trailingComma: 'none',
  bracketSpacing: true,
  semi: false
}

然后重启 vscode 这个时候没报错了

4、注意

如若 想要执行 pnpm exec eslint --fix 可能会有一个报错 eslint-config-prettier 找不到,还需要安装一下这个,因为在 eslint-plugin-prettier 包里面用到了

pnpm add eslint-config-prettier -D

在这里插入图片描述

在这里插入图片描述

5、eslint-plugin-prettier/recommended 与自己的默认规则,冲突解决

这个好像并且不是这个问题,重启一下vscode 就好了,不用再添加 rules 了

比如我设置了,'no-console': 'error', , 但是下面的 eslintPluginPrettier 的会覆盖 上的 ‘no-console’ ,就导致 这个 no-console 的配置没有生效,所以需要 在下面继续新增一个 rules

在这里插入图片描述

在这里插入图片描述


http://www.kler.cn/a/452003.html

相关文章:

  • 2021-04-08 VSC++: 降序折半查找。
  • YOLOv11 引入高效的可变形卷积网络 DCNv4 | 重新思考用于视觉应用的动态和稀疏算子
  • 小程序app封装公用顶部筛选区uv-drop-down
  • 仿真中产生的simv文件
  • 企业数字化转型加速,现代 IT 如何用 Datadog 全面提升可观测性?
  • Ubuntu22.04 LTS 安装nvidia显卡驱动
  • 《Cocos Creator游戏实战》非固定摇杆实现原理
  • C#Directory类文件夹基本操作大全
  • 微信小程序的轮播图学习报告
  • ChatGPT之父:奥尔特曼
  • spring boot的配置文件属性注入到类的静态属性
  • 图像处理-Ch7-图像金字塔和其他变换
  • WebPack3项目升级webpack5的配置调试记录
  • 计算机网络习题(第5章 网络层 第6章 传输层)
  • 基于3D-Speaker进行区分说话人项目搭建过程报错记录 | 通话录音说话人区分以及语音识别 | 声纹识别以及语音识别 | pyannote-audio
  • 学习threejs,THREE.CircleGeometry 二维平面圆形几何体
  • webrtc获取IceCandidate流程
  • 如何在 Ubuntu 22.04 上安装 phpMyAdmin
  • 记AI的遇见、使用和思考
  • vue+elementui实现下拉表格多选+搜索+分页+回显+全选2.0
  • 使用 Python 为 PDF 添加水印
  • 【Android】BuildConfig类找不到(无法生成问题解决)
  • 【Golang 面试题】每日 3 题(四)
  • 安装k8s涉及命令(方便放到txt离线使用)
  • 常见设计原则
  • 如何解决 Apache 中 “CORS no allow credentials” 错误 ?