规范代码编写风格就用 eslint 和 prettier

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)

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

1_init操作.png

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

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

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

3_eslint校验文件.png

通过命令一个文件一个文件检测效率会比较低,在项目中可以直接配置 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 ,当文件有错误时,将不会通过编译

4_eslint-loader.png

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 来执行,发现此时只剩工具帮我们修复了部分错误,包括行尾分号以及字符串单引号。

5_--fix属性.png

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

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

6_vscode插件.png

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

7_eslint工具报错和警告.png

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

8_setting中配置prettier.png

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

9_prettierrc文件.png

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

修复错误

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

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

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

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

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

10_剩余错误.png

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

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

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

11_错误修复.png

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

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 229,362评论 6 537
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 99,013评论 3 423
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 177,346评论 0 382
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 63,421评论 1 316
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 72,146评论 6 410
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 55,534评论 1 325
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 43,585评论 3 444
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 42,767评论 0 289
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 49,318评论 1 335
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 41,074评论 3 356
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 43,258评论 1 371
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 38,828评论 5 362
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 44,486评论 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 34,916评论 0 28
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 36,156评论 1 290
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 51,993评论 3 395
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 48,234评论 2 375

推荐阅读更多精彩内容