eslint+prettier前端代码规范配置

2023-11-11

前端代码规范配置

参考来源:https://blog.csdn.net/u013361179/article/details/108885859

前言

  1. eslint的作用:eslint作用是按照一定规则,检测代码质量;

  2. prettier的作用:prettier起到的作用是按照统一风格去美化代码

    目前支持的格式:

    • javascript、jsx、ts、tsx
    • flow
    • json
    • css、less、scss
    • graphql
    • markdown
    • yaml

ESlint虽然可以检测代码质量问题并给出提示,但是格式化的能力有限,只能格式化js,不支持css,html等语言。而Prettier具有更强大的功能,能够支持包括 js、ts、各种 css、vue 和 md 等前端绝大部分的语言和文件格式。因此,我们可以通过ESlint和Prettier组合使用,用Eslint进行代码校验,用Prettier统一代码风格。

eslint规则

规则配置:https://blog.51cto.com/itcjf/2995936#types–complex

prettier规则

官网:https://www.prettier.cn/

settings.json文件

setting 配置(ctrl+shift+P打开

setting.json文件分为工作区和用户区,

  1. 工作区:如果只是想改变该项目的配置,就在工作区;
  2. 用户区:如果是想所有项目都用改配置就在用户区添加,用户区添加以后其他电脑登录对应用户也会同步更新的;

vetur

注意:在 vscode 中其实 Vetur 也有一套 Format 规则,因此会和 prettier 冲突。打开 setting-扩展-Vetur 将 Vetur 的规则改成 Prettier 就好了。如果有需要忽略的文件可以在 .eslintignore 文件中进行配置(可以忽略)

配置流程

一、vscode插件商城安装插件

首先安装的代码格式化插件:vetur、ESLint

二、安装依赖

  1. npm i -D eslint babel-eslint eslint-plugin-vue @vue/cli-plugin-eslint

    npm i -D eslint babel-eslint eslint-plugin-vue @vue/cli-plugin-eslint --legacy-peer-deps
    

​ eslint: ESLint 的核心代码
​ babel-eslint: eslint 与 babel 整合包
​ eslint-plugin-vue @vue/cli-plugin-eslint: eslint 与 vue 整合包

  1. npm i -D prettier eslint-plugin-prettier eslint-config-prettier prettier-eslint-cli

    npm i -D prettier eslint-plugin-prettier eslint-config-prettier prettier-eslint-cli --legacy-peer-deps
    

    prettier:prettier 插件的核心代码
    eslint-plugin-prettier:这个插件的主要作用就是将 prettier 作为 ESLint 的规则来使用,相当于代码不符合 Prettier 的标准时,会报一个 ESLint 错误
    eslint-config-prettier:解决 ESLint 中的样式规范和 prettier 中样式规范的冲突,以 prettier 的样式规范为准,使 ESLint 中的样式规范自动失效,本质上这个工具其实就是禁用掉了一些不必要的以及和 Prettier 相冲突的 ESLint 规则。
    prettier-eslint-cli:prettier-eslint-cli 允许多个文件用 prettier-eslint 进行格式化

三、配置eslint(.eslintrc.js)

ESlint配置中各项值的含义:

https://eslint.bootcss.com/docs/user-guide/configuring

  1. parserOptions

    解析器选项。指定你想支持的语言,默认支持es5。指定啥语言,eslint就按照啥语法检查。

  2. parser

    指定要使用的解析器。(parser和parserOptions要同时使用)

  3. processor

    指定插件的处理器。(需要和 plugins 字段配合使用)处理器可以从另一种文件中提取 JavaScript 代码,然后让 ESLint 检测 JavaScript 代码。或者处理器可以在预处理中转换 JavaScript 代码。

  4. environments

    指定代码运行环境。

  5. globals

    定义全局变量。告知 eslint,不必报 no-undef 错误。

  6. rules

    手动自定义代码规范。

    • off 或 0:表示不验证规则。
    • warn 或 1:表示验证规则,当不满足时,给警告。
    • error或 2 :表示验证规则,不满足时报错。
  7. extends

    用于继承某些基础配置。值可以是字符串/数组。值为数组时,每个配置继承它前面的配置。(说白了,就是别人提前写好了一套 rules,你直接拿过来用就行。不用自己一个一个一个的,写 rules 规则。)

ESlint配置

在项目的根目录下,新建.eslintrc.js 或者一键生成npm init @eslint/config文件,将定义的eslint规则拷贝进去

module.exports = {
    // 指定代码的运行环境
    env: {
        browser: true,
        node: true,
        es6: true,
    },
    extends: [
        //继承 vue 的标准特性
        'eslint:recommended',
        'plugin:vue/essential'],
    globals: {
        Atomics: 'readonly',
        SharedArrayBuffer: 'readonly'
    },
    parserOptions: {
        // 定义ESLint的解析器
        parser: "babel-eslint",
        sourceType: "module",
    },
    plugins: ['vue'],
    rules: {
        indent: [
            2,
            2, // 缩进两个
            {
                SwitchCase: 1, // switch case缩进缩进2格(2x1)
                VariableDeclarator: 'first' // const let var 对齐缩进
            }
        ],
        eqeqeq: 2, // 要求使用 === 和 !==
        'lines-around-comment': [
            2,
            {
                beforeBlockComment: true, // 块注释之前空行
                beforeLineComment: false, // 行注释之前空行
                allowBlockStart: true, // 允许注释出现在块语句的开始位置
                allowObjectStart: true, // 允许注释出现在对象字面量的开始位置
                allowArrayStart: true, // 允许注释出现在数组字面量的开始位置
                allowClassStart: true, // 允许注释出现在类的开始位置
                ignorePattern: '#'
            }
        ],
        'spaced-comment': 2, // 注释上的空格,//xxx => // xxx
        'no-whitespace-before-property': 2, // 禁止点调用有空格 a. b => a.b
        'no-multiple-empty-lines': [
            2,
            {
                max: 1, // 连续最大空行数
                maxEOF: 0 // 文件末尾空行数
            }
        ],
        'block-spacing': [2, 'always'], // 代码块空格{return} => { return }
        'arrow-spacing': 2, // 要求箭头函数的箭头部分前后的空格
        quotes: [
            2,
            'single',
            {
                // 允许字符串使用单引号或者双引号,只要字符串中包含了一个其他引号,否则需要转义
                avoidEscape: true,
                // 允许字符串使用反勾号
                allowTemplateLiterals: true
            }
        ],
        'brace-style': 2, // else 与它的大括号同行。
        curly: 2, // if 语句如果包含多个语句则使用大括号。
        'operator-linebreak': 2, // 三元表达式如果是多行,则 ? 和 : 放在各自的行上。
        // 对属性名强制使用驼峰
        camelcase: [2, {
            properties: "always"
        }],
        "no-console": 2,//禁止使用console
        'comma-dangle': 2, // 无多余逗号。
        'no-underscore-dangle': 2// 此规则不允许在标识符中使用悬空下划线。
    }
};

四、配置prettier (.prettierrc.js)(可选)

可配置也可不配置:若不配置在setting.json文件中加入"vetur.format.defaultFormatter.js": "none",即可

//一键格式化
npx prettier --write .

在项目的根目录下,创建.prettierrc.js 文件,定义的prettier规则拷贝进去

module.exports = {
  // 最大长度80个字符
  printWidth: 80,
  // 行末分号
  semi: true,
  // 单引号
  singleQuote: true,
  // JSX双引号
  jsxSingleQuote: false,
  // 尽可能使用尾随逗号(包括函数参数)
  trailingComma: 'none',
  // 在对象文字中打印括号之间的空格。
  bracketSpacing: true,
  // > 标签放在最后一行的末尾,而不是单独放在下一行
  jsxBracketSameLine: false,
  // 缩进
  tabWidth: 2,
  // 使用tab还是空格
  useTabs: false,
  // 行尾换行格式
  endOfLine: 'auto',
  //空格敏感
  HTMLWhitespaceSensitivity: 'ignore',
  extends: [
    //继承 vue 的标准特性
    'plugin:vue/essential',
    'eslint:recommended',
    //避免冲突
    'plugin:prettier/recommended'
  ]
};

五、配置setting.json文件

ctrl+shift+P打开,将配置拷贝进去以后,保存关闭

  //设置vetur默认html代码格式化风格
  "vetur.format.defaultFormatter.html": "prettier",
  // 为ESLint启用“保存时自动修复”,并且仍然具有格式和快速修复功能
  "editor.codeActionsOnSave": {
    "source.fixAll": true,
    "source.fixAll.eslint": true
  },
  "eslint.enable": true,
  "eslint.options": {
    "extensions": [
      ".js",
      ".vue",
      ".ts",
      ".tsx"
    ]
  },
//保存的时候格式化代码
  "editor.formatOnSave": true,
  "eslint.validate": [
    "vue",
    "html",
    "javascript",
    "typescript",
    "javascriptreact",
    "typescriptreact"
  ],

六、配置eslintignore文件(.eslintignore)

需要忽略格式化的文件就放入该文件

node_modules
.vscode
.idea
/public
.eslintrc.js
.DS_Store
/dist

七、最后

上述步骤完成以后,记得一定要重启VSCode才会生效

转换思路:

eslint规则+eslint插件:代码规则不符合eslint配置报红色错误提示;

eslint规则:代码不符合eslint规则,编译的时候报错;

prettier规则:让和eslint冲突的规则统一,自动保存的时候;

自动保存是分为两步的:
第一步是eslint自动修复js代码;
第二步是prettier格式化html+css代码和部分js代码,而在这个时候prettier格式化js代码会和eslint规则有冲突,这个时候eslint-config-prettier依赖会让以 prettier 的样式规范为准,使 ESLint 中的样式规范自动失效;

问题:
  1. 已经有eslint规则,为什么还要单独去写prettier规则?
    因为eslint规则只是针对于js代码,prettier规则是对于大部分代码格式化都有用的,vetur插件中自带prettier规范,对于prettier如果不想配置,直接在setting.json文件中加入:"vetur.format.defaultFormatter.js": "none"即可(主要是使vetur对js代码格式化失效)

  2. 哪些代码是可以自动修复的?
    空格,双引号这些格式的代码是可以自动修复的,代码规范报错会提示到具体代码,手动修改

参考来源:https://blog.csdn.net/u013361179/article/details/108885859

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

eslint+prettier前端代码规范配置 的相关文章

  • ajax全选功能,jq checkbox 的全选并ajax传参的实例

    Box prop checked true else checkBox removeAttr checked form on click ids function var chknum input name ids checkBox siz
  • Convolutional Networks(3)

    CONTENTS Random or Unsupervised Features Typically the most expensive part of convolutional network training is learning
  • usart和uart的主要区别

    USART 通用同步和异步收发器UART 通用异步收发器 当进行异步通信时 这两者是没有区别的 区别在于USART比UART多了同步通信功能 这个同步通信功能可以把USART当做SPI来用 比如用USART来驱动SPI设备 同步是指 发送方
  • BMP转JPG(法一)使用jpeglib库实现bmp转jpg

    一 vc编译jpeglib库 1 下载源代码 下载地址 http www ijg org 注意 一定要下载win32 版本 2 编译源代码 A 解压源代码 修改源代码中jconfig vc为jconfig h B 添加环境变量PATH C

随机推荐

  • 微信卡券 java_微信小程序领取卡券(java)

    最近做了个领取微信卡券的小程序 看了很多文档资料以及花了很多时间才算搞定的 不过也算是好事多磨 这边记录分享一下 也算给一点提升 一 开发前准备 1 申请微信公众号 和 微信小程序 这是两个不同的东西 都需要单独申请 不同的帐号 2 微信公
  • swiper-item @touchmove.stop false不好用

    我理解你的问题是说你在使用 Vue js 框架中的 swiper item 组件时 你想禁止它的 touchmove 事件 但是 touchmove stop 这个修饰符却不起作用 首先 touchmove stop 这个修饰符是用来阻止浏
  • 【编译原理】LALR(1)语法分析方法(c++实现)

    前文回顾 编译原理 LR 0 分析方法 c 实现 编译原理 SLR 1 分析方法 c 实现 编译原理 LR 1 分析方法 c 实现 这几个程序的代码大部分是一样的 根据不同算法特点做了部分修改而已 代码 LALR 1 的代码就是在LR 1
  • 元宇宙通证-七、元宇宙外:千行万业的元宇宙化

    七 元宇宙外 千行万业的元宇宙化 元宇宙将会赋能所有行业 激发传统行业的发展新动能 实现行业高质量发展 千行万业的元宇宙化 其中最重要的是经济体系 沉浸感 社交关系的代入 一方面 元宇宙将会赋能现实世界的所有行业领域 基于现有商业模式进行元
  • CTF加密解密—CRYPTO—crypto8

    0x00 考察知识点 这道题和上道Ook的题目同源 直接通过Ook底层的解码进行解码 因为Ook本身就是在brainfuck的基础上完成的 0x01 题目 gt lt gt lt gt lt gt lt gt lt gt lt gt lt
  • Ubuntu系统下《汇编语言》环境配置

    说明 1 系统 Ubuntu codists pc lsb release a No LSB modules are available Distributor ID Ubuntu Description Ubuntu 21 10 Rele
  • C语言实现快速排序与归并排序

    快排 代码如下 include
  • 深度学习框架太抽象?其实不外乎这五大核心组件

    转 http www leiphone com news 201701 DZeAwe2qgx8JhbU8 html 导语 一般深度学习框架都会包括的五大核心组件都有哪些 许多初学者觉得深度学习框架抽象 虽然调用了几个函数 方法 计算了几个数
  • 电阻中联分压电路的计算

    方法一 如下图所示 大概1K 分压1V Vp Vin x R2 R1 R2 3Vx2K 1K 2K 2V 结论 R2增加P增加 R1减小 P增加 方法二 用工具计算 如下图
  • 软件设计师备考——第七章 面向对象

    软件设计师备考 第七章 面向对象 一 面向对象基础 1 面向对象的基本概念 2 类 3 对象 4 消息 二 方法 1 方法重载 2 封装 3 继承 4 多态 5 静态 动态绑定 三 面向对象设计 1 面向对象设计原则 2 面向对象分析 3
  • Git:husky > npm run -s precommit

    git commit前检测husky与pre commit 问题 我是通过vs code 编辑器中进行提交代码 以往都是在勾选上需要提交的文件后 并输入提交描述 点击commit就提交成功了 但是今天点击commit突然报错 思路 先想办法
  • centos red5 添加成为服务并且设置开机自启动

    1 vi etc init d red5 创建tomcat red5 2 在red5中添加如下的内容 一定要在头部添加java环境的引用 否则可能启动不成功 说明 其中的JAVA HOME要设置为本机真实的java路径 RED5 HOME也
  • matlab 画随机数图,怎么用matlab生成100个标准正态分布的随机数并画出直方图

    正态分布是normpdf x mu sigma mu sigma 默认是 0 1例子ez 由热心网友提供的答案1 生成一组随机数 正态分布 data normrnd 0 1 1 500 绘制直方图hist d f normrnd 0 1 1
  • StrongSORT(deepsort强化版)学习体会

    少废话 先做备忘录 StrongSORT deepsort强化版 浅实战 代码解析 参考 https blog csdn net weixin 50862344 article details 127070391 https github
  • 关于angular2路由传参

    在开发一个网站中遇到需要在路由传参的需求 一个示例列表组件 其中每个示例项点击进入均可加载该示例详情页 在路由中传参有3种方法 1 routerLink 单一参数 在 a a 中加routerLink进行跳转 其中 exampledetai
  • SpringBoot3.0都正式发布了,尝鲜之前先搞明白AQS底层再说!

    V xin ruyuanhadeng获得600 页原创精品文章汇总PDF 一 写在前面 上一篇文章聊了一下java并发中常用的原子类的原理和Java 8的优化 具体请参见文章 为什么程序员招聘都要5年经验起 因为他们懂Java8底层优化 这
  • 测试工程师的核心竞争力

    基础能力 1 测试策略设计能力 测试策略设计能力是指 对于各种不同的被测软件 能够快速准确地理解需求 并在有限的时间和资源下 明确测试重点以及最适合的测试方法的能力 例如 测试要具体执行到什么程度 测试需要借助于什么工具 如何运用自动化测试
  • git - 简明指南

    安装 下载 git OSX 版 下载 git Windows 版 Linux自己通过yum apt get等命令安装 创建新仓库 创建新文件夹 打开 然后执行 git init 以创建新的 git 仓库 检出仓库 执行如下命令以创建一个本地
  • SpringBoot使用Slf4j进行日志配置

    首先在resource文件夹下面创建logback spring xml文件
  • eslint+prettier前端代码规范配置

    前端代码规范配置 参考来源 https blog csdn net u013361179 article details 108885859 前言 eslint的作用 eslint作用是按照一定规则 检测代码质量 prettier的作用 p