你也许不知道的Vuejs - 使用ESLint检查代码质量

you-may-not-know-vuejs.png

by yugasun from https://yugasun.com/post/you-may-not-know-vuejs-8.html
本文可全文转载,但需要保留原作者和出处。

前言

Javascript 是一门弱类型语言,所以语法检查变得尤为重要。虽然有很多前端IDE开发工具,可以很好地帮助我们提示在编写时的错误,但是大多数开发者还是使用的像 Sublime TextVisual Studio Code 之类的轻量级编辑器,这导致在开发中很容易出现各种错误,比如单词拼写错误,漏掉了括号等。而且每个人的代码编写习惯也不一样,因此有的项目的代码格式千差万别,比如 缩进空格数,有的习惯4个,有的习惯2个,这也导致项目维护起来越来越麻烦,遇到错误也很难定位。因此对 Javascript 进行语法检查的工具应运而生,目前 ESLint 使用最为广泛。这篇将讲解如何将 ESLint 集成到我们的项目中。

配置方式

ESLint 具有高可配置行,这就意味着你可以根据项目需求定制代码检查规则。ESLint 的配置方式可以有以下两种方式:

  • 文件注释:在 Javascript 文件中使用注释包裹配置内容。
  • 配置文件(推荐):在项目根目录下创建包含检查规则的 .eslintrc.* 文件。

扩展配置文件

ESLint 配置文件中的 extends 字段可以扩展集成现有的规则,比如著名的 Airbnb JavaScript Style,可以通过安装 eslint-config-airbnb-base 集成使用。

开始使用

因为本人比较偏向于 Airbnb JavaScript Style,所以今后的代码规范将均使用此规范。并且我们这里是 Vuejs 项目,所以需要同时对 .vue 文件中的 js 代码进行检测,就需要利用 eslint-plugin-vue 插件来搭配使用。

首先,安装依赖:

npm install eslint eslint-config-airbnb-base eslint-plugin-import eslint-plugin-vue --save-dev

其次,在项目根目录下新建 .eslintrc.js 文件,配置如下:

module.exports = {
  extends: [ 'plugin:vue/essential', 'airbnb-base' ],
};

最后,在 package.json 中添加 lint 脚本:

// ...
"scripts": {
  // ...
  "lint": "eslint --ext .js,.vue src"
},
// ...

当然你也可以全局安装以上依赖,这样你可以直接运行 eslint --ext .js,.vue src 命令。

Ok, 配置好了~

命令行运行 npm run lint,输出如下:

$ npm run lint

> vue-webpack-demo@0.0.1 lint /Users/Yuga/Desktop/VueLearning/You-May-Not-Know-Vuejs/chapter2/4
> eslint --ext .js,.vue src

/Users/Yuga/Desktop/VueLearning/You-May-Not-Know-Vuejs/chapter2/4/src/hello1.vue
  17:16  error    Missing trailing comma        comma-dangle
  26:9   warning  Unexpected console statement  no-console
  38:9   warning  Unexpected console statement  no-console

/Users/Yuga/Desktop/VueLearning/You-May-Not-Know-Vuejs/chapter2/4/src/utils.js
  15:3  warning  Unexpected console statement  no-console

✖ 4 problems (1 error, 3 warnings)
  1 error, 0 warnings potentially fixable with the `--fix` option.

你会发现检查出一堆错误,不要方,输出的错误说明的非常明显,只需要根据错误提示行号去检查,然后根据规则更改就行了。

上面的命令中 --ext 参数就是用来指定需要检查的扩展名的文件,src 就是指定检查的目录。

添加自定义规则

虽然 Airbnb 的代码风格已经很成熟了,但是并不是满足任何人需求的。有些时候,如果想修改一些规则怎么办?这时我们可以通过在 .eslintrc.js 文件中添加 rules 字段来自定义。规则 no-console 就是用来规定禁止使用 console 来调试程序,Airbnb 代码风格在检查是会输出如下警告:

/Users/Yuga/Desktop/VueLearning/You-May-Not-Know-Vuejs/chapter2/4/src/hello1.vue
  26:9  warning  Unexpected console statement  no-console

但是我们有些时候项目经常使用到 console,所以我会关闭该条规则,修改 .eslintrc.js 文件如下:

module.exports = {
  extends: [ 'plugin:vue/essential', 'airbnb-base' ],
  rules: {
    'no-console': 'off',
  }
};

这样在运行 npm run lint 时,命令行就不会输出 no-console 警告了。

有关 ESLint 的基础教程请阅读 ESLint,关于 Airbnb 代码规范,请阅读 Airbnb JavaScript Style

总结

读完你会发现,之前自己一直不敢使用的 ESLint 是如此的简单,无论是安装还是配置,非常的人性化。

作为一名优秀的程序员,规范化的代码风格尤为重要,这不仅能降低代码出错率,而且非常有益于别人阅读你的代码。说到代码阅读,代码注释也是必不可少的。俗话说 己所不欲,勿施于人,如果你不想阅读 shit 一样的代码,那么就先从自身做起,赶紧在你的项目中实践起来吧~

源码在此

专题目录

You-May-Not-Know-Vuejs

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

推荐阅读更多精彩内容