eslint 可以用于规范我们的编码,使得项目中的代码风格一致,更利于阅读和维护,而 prettier 可以在当我们代码不符合 eslint 规范是进行部分自动修复。

eslint

通过 npm install eslint -D 安装 eslint,然后执行 npx eslint --init 初始化配置文件

在执行 init 操作的时候,eslint 生成配置文件会问你一些问题

  • 想怎样来使用 eslint
  • 模块化的方式(Es module、commonjs)
  • 选择哪一种框架(React、Vue)
  • 是否需要 TypeScript
  • 项目运行在浏览器还是客户端
  • 指定怎样的代码规范(Airbnb、Standard、Google、XO)
  • 生成的配置文件类型(JavaScript、YAML、JSON)

依次选择完成后再让它自动安装所需要的依赖。

在这些问题中,我选择了 使用 eslint 时检查代码发现问题后并提醒、模块化使用 commonjs、不需要框架和 TypeScript、项目运行在浏览器端,使用 airbnb 编码规范,生成配置文件为 JavaScript,这样就生成了 eslint 配置文件 .eslintrc.js

  • env 表示当前eslint代码运行在什么环境
  • extends 表示继承的规则
  • parserOptions 里定义了 支持的 ecmaScript 版本
  • rules 中可以自定义规则

有了这些规则之后,通过命令 npx eslint ./src/index.js 来校验文件,依据 airbnb 的标准,五行代码检测出了六个错误和一个警告。

通过命令一个文件一个文件检测效率会比较低,在项目中可以直接配置 loader 来处理

eslint-loader

通过 npm install eslint-loader -D 安装依赖,在 webpack.config.js 中配置 eslint-loader 统一处理 js 文件

module: {
  rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: ['eslint-loader'],
},
],
},

执行 npm run build ,当文件有错误时,将不会通过编译

vscode插件

既然 eslint 检测出这么多错误,那我们得解决问题,使代码符合规范。

以上报错和警告可以归纳为

  • quotes:Strings must use singlequote,表示必须使用单引号
  • semi:Missing semicolon,表示行尾少了分号
  • no-unused-vars,定义变量但没有使用
  • no-console,不期望使用 console 语句
  • import/prefer-default-export,建议使用默认导出

其中无论是 eslint 工具还是 eslint-loader 报错代码都有提示 "4 errors and 0 warnings potentially fixable with the '--fix' option"。

那我们通过 --fix 处理这个文件,通过 npx eslint --fix ./src/index.js 来执行,发现此时只剩工具帮我们修复了部分错误,包括行尾分号以及字符串单引号。

像上面的代码,在编写的过程中可能也不知道哪里有错误,如果平时编写代码的时候,能有不符合规范的错误提示,以及对于部分不规范代码能自动修复的话,比如双引号转换单引号,会给开发带来比较大的便利。

vscode 中插件可以达到这样的效果, ESLint 用于报错提醒,Prettier 用于代码格式化。

ESLint 工具会读取本地的 eslint 配置,对文件进行报错和警告,标红表明"error",黄色下划线表示"warn"。

prettier 自动格式化代码需要我们做一些配置,可以在 vscode 中通过 Settings 设置代码格式化规则,选择后会自动添加到 setting.json 中,比如单引号替代双引号。

prettier 还可以在配置文件 .prettierrc 中进行项目的代码格式化规范,比如宽度超过100自动换行。

配置完成后,就可以通过快捷键自动格式化啦~

修复错误

无法通过工具自动修复的代码就只能自己手动来处理,我们可以通过三种方式来修复错误

  • 修改错误源代码
  • 将错误提醒关闭或者设置为"warn"
  • 将错误配置为项目中所需要的格式

在 .eslintrc.js 里 rules 属性中配置自定义的规则,规则有三种选择方式,"off" 或 0 代表关闭校验,"warn" 或 1 代表不报错只警告,"error" 或 2 代表报错

  • 比如不希望有 console 语句,直接将 console 语句移除
  • 定义变量但没有使用不要报错只是警告 'no-unused-vars': 'warn'
  • 使用双引号报错,默认是单引号,但我们修改规定项目中的字符串就使用双引号 quotes: [2, 'double']

通过 --fix 或者 prettier 自动修复之后,还剩两个错误和一个警告

警告不影响文件的编译,另外两个报错可以设置为关闭和警告

rules: {
  'no-unused-vars': 'warn',
  'import/prefer-default-export': 0,
},

再次运行 npm run build,只剩两个警告,可以通过编译,代码也不再标红。

eslint 和 prettier 在前端工程化方向有很大的作用,可以减少开发错误,帮助团队中形成比较一致的编码风格。

以上就是 eslint 和 prettier 相关的总结, 更多有关webpack的内容可以参考我其它的博文,持续更新中~

规范代码编写风格就用 eslint 和 prettier的更多相关文章

  1. JAVA_SE基础——编码规范&代码编写规则

    这次我来给大家说明下编码规范&代码编写规则  ↓ 编码规范可以帮助程序员在编程时注意一些细节问题,提高程序的可读性,让程序员能够尽快地理解新的代码,并帮助大家编写出规范的利于维护的Java代码 ...

  2. PHP团队 编码规范 & 代码样式风格规范

    一.基本约定 1.源文件 (1).纯PHP代码源文件只使用 <?php 标签,省略关闭标签 ?> : (2).源文件中PHP代码的编码格式必须是无BOM的UTF-8格式: (3).使用 U ...

  3. 浅谈Verilog HDL代码编写风格

    消失了好久,没有写文章,也没有做笔记,因为最近再赶一个比赛,时间很紧,昨天周六终于结束了,所以趁着周末这会儿有时间,写点东西,记录下来.首先我学习FPGA才一年多,我知道自己没有资格谈论一些比较深层次 ...

  4. 学习SpringMVC中优秀的代码编写风格

    在org.springframework.web.servlet.FrameworkServlet 中有下面这段代码 private class ContextRefreshListener impl ...

  5. Java代码编写规范(不是标准规范,自行整理,无须纠结)

    最近回过头来给以前的项目增加功能,发现之前写的注释非常不全,代码也非常的不整洁,有些地方写的''窝七八烂的,看着很不舒服:又恰好经理最近也经常跟我提起代码规范,我们就讨论了一下代码规范的重要性和必要性 ...

  6. Python代码编写规范

    Python代码编写规范 编码: a)     如无特殊情况,文件一律使用UTF-8编码 b)     如无需特殊情况,文件头部必须加入#-*-coding:utf-8-*- 缩进 a)     统一 ...

  7. Java学习---Java代码编写规范

    编码规范 1 前言为确保系统源程序可读性,从而增强系统可维护性,java编程人员应具有基本类似的编程风格,兹制定下述Java编程规范,以规范系统Java部分编程.系统继承的其它资源中的源程序也应按此规 ...

  8. Java代码编写规范(转载)

    编码规范 1 前言为确保系统源程序可读性,从而增强系统可维护性,java编程人员应具有基本类似的编程风格,兹制定下述Java编程规范,以规范系统Java部分编程.系统继承的其它资源中的源程序也应按此规 ...

  9. 03.ElementUI源码学习:代码风格检查和格式化配置(ESlint & Prettier)

    书接上文.在团队协作中,为避免低级Bug.以及团队协作时不同代码风格对彼此造成的困扰与影响,会预先制定编码规范.使用 Lint工具和代码风格检测工具,则可以辅助编码规范执行,格式化代码,使样式与规则保 ...

  10. .NET代码编写规范 整理

    .NET代码编写规范 整理 .NET代码编写规范 - [ASP.NET] 2009-02-26 | Tag: 版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明 http://lensp ...

随机推荐

  1. 2022-11-30:小红拿到了一个仅由r、e、d组成的字符串 她定义一个字符e为“好e“ : 当且仅当这个e字符和r、d相邻 例如“reeder“只有一个“好e“,前两个e都不是“好e“,只有第三个

    2022-11-30:小红拿到了一个仅由r.e.d组成的字符串 她定义一个字符e为"好e" : 当且仅当这个e字符和r.d相邻 例如"reeder"只有一个&q ...

  2. 2022-07-24:以下go语言代码输出什么?A:[]int{};B:[]int(nil);C:panic;D:编译错误。 package main import ( “fmt“ ) f

    2022-07-24:以下go语言代码输出什么?A:[]int{}:B:[]int(nil):C:panic:D:编译错误. package main import ( "fmt" ...

  3. 2021-02-18:给定一个字符串str,给定一个字符串类型的数组arr,出现的字符都是小写英文。arr每一个字符串,代表一张贴纸,你可以把单个字符剪开使用,目的是拼出str来。返回需要至少多少张贴纸可以完成这个任务。例子:str= "babac",arr = {"ba","c","abcd"}。a + ba + c 3 abcd + abcd 2 abcd+ba 2。所以返回2。

    2021-02-18:给定一个字符串str,给定一个字符串类型的数组arr,出现的字符都是小写英文.arr每一个字符串,代表一张贴纸,你可以把单个字符剪开使用,目的是拼出str来.返回需要至少多少张贴 ...

  4. 2022-01-21:完美矩形。 给你一个数组 rectangles ,其中 rectangles[i] = [xi, yi, ai, bi] 表示一个坐标轴平行的矩形。这个矩形的左下顶点是 (xi,

    2022-01-21:完美矩形. 给你一个数组 rectangles ,其中 rectangles[i] = [xi, yi, ai, bi] 表示一个坐标轴平行的矩形.这个矩形的左下顶点是 (xi, ...

  5. 【Linux】(小白向)详解VirtualBox网络配置-配置Linux网络

    本文时间 2023-05-18 作者:sugerqube漆瓷 本文面向新手,重在理解会舍弃不少精密的理论,还请大佬们见谅. 本文目标:成功使用ssh工具登录linux,同时linux能连接外网. 网络 ...

  6. ChatGPT 问答

    Win32GUI编程时,创建窗口触发消息的顺序 在Win32 GUI编程中,创建窗口并显示到屏幕上时,系统会触发一系列的消息,这些消息可以用来完成窗口的初始化和其他相关的工作.下面是创建窗口触发消息的 ...

  7. jvm中类和对象定义存储基础知识

    1 类文件数据结构类型 Class文件结构主要有两种数据结构:无符号数和表 •无符号数:用来表述数字,索引引用.数量值以及字符串等,比如 图1中类型为u1,u2,u4,u8分别代表1个字节,2个字节, ...

  8. 【C++ Primer】第二章(2 ~ 6节)

    变量 变量提供一个具名的.可供程序操作的存储空间. C++中变量和对象一般可以互换使用. 变量定义(define) 定义形式:类型说明符(type specifier) + 一个或多个变量名组成的列表 ...

  9. pcie reset系列之 内核框架

    FLR是pci reset的一种. 关于FLR的寄存器操作比较简单, 相关的寄存器有: 配置空间里device cap里的FLR capability bit, 这个表示设备是否支持FLR. 配置空间 ...

  10. 从零实现俄罗斯方块(c语言+思路分析)

    俄罗斯方块 文章说明: 本文大部分参考至俄罗斯方块(C语言实现)_c语言俄罗斯方块_2021dragon的博客-CSDN博客,本人经过修改编辑,改变了文章的一些思路顺序,使得新手便于理解(个人想法). ...