vue+webpack中配置ESLint


Posted in Javascript onNovember 07, 2018

一、ESLint

协同开发过程中,经常感受到来自代码检视的恶意。代码习惯不一致,看半天;居然提交低级错误,我的天(??□′)?︵┻━┻!...研究了一番,决定使用ESLint来做代码规范检查。

二、配置方式

  • JavaScript注释:通过JavaScript注释把配置信息嵌入代码中。
  • package.json:在package.json文件中的eslintConfig字段中指定配置。
  • 配置文件:通过.eslintrc.(js/json/yaml/yml)的独立文件来为整个目录或者子目录指定配置信息,ESlint会查找并且自动读取配置文件。

三、配置过程(配置文件)

安装相关npm包

yarn add eslint babel-eslint eslint-plugin-vue eslint-friendly-formatter --dev

增加文件

  • .eslintignore 用来配置不需要检查的文件(类似git的.gitignore)。
  • .eslintrc.js 用来配置ESlint验证规则的配置文件。

修改webpack配置文件

module.exports = {
 module: {
  rules: [
   test: /\.(js|vue)$/,
   loader: "eslint-loader",
   enforce: "pre",
   //指定检查的目录
   include: [resolve(__dirname, 'src')],
   //eslint检查报告的格式规范
   options: {
    formatter: require("eslint-friendly-formatter")
   }
  ]
 }
}

四、配置文件详解

以.eslintrc.js为例

module.exports = {
 //一旦配置了root,ESlint停止在父级目录中查找配置文件
 root: true,
 //解析器
 parser: "babel-eslint",
 //想要支持的JS语言选项
 parserOptions: {
  //启用ES6语法支持(如果支持es6的全局变量{env: {es6: true}},则默认启用ES6语法支持)
  //此处也可以使用年份命名的版本号:2015
  ecmaVersion: 6,
  //默认为script
  sourceType: "module",
  //支持其他的语言特性
  ecmaFeatures: {
   //...
  }
 },
 //代码运行的环境,每个环境都会有一套预定义的全局对象,不同环境可以组合使用
 env: {
  es6: true,
  browser: true,
  jquery: true
 },
 //访问当前源文件中未定义的变量时,no-undef会报警告。
 //如果这些全局变量是合规的,可以在globals中配置,避免这些全局变量发出警告
 globals: {
  //配置给全局变量的布尔值,是用来控制该全局变量是否允许被重写
  test_param: true
 },
 //支持第三方插件的规则,插件以eslint-plugin-作为前缀,配置时该前缀可省略
 //检查vue文件需要eslint-plugin-vue插件
 plugins: ["vue"],
 //集成推荐的规则
 extends: ["eslint:recommended", "plugin:vue/essential"],
 //启用额外的规则或者覆盖默认的规则
 //规则级别分别:为"off"(0)关闭、"warn"(1)警告、"error"(2)错误--error触发时,程序退出
 rules: {
  //关闭“禁用console”规则
  "no-console": "off",
  //缩进不规范警告,要求缩进为2个空格,默认值为4个空格
  "indent": ["warn", 2, {
   //设置为1时强制switch语句中case的缩进为2个空格
   "SwitchCase": 1,
   //分别配置var、let和const的缩进
   "VariableDeclarator": { "var": 2, "let": 2, "const": 3 }
  }],
  //定义字符串不规范错误,要求字符串使用双引号
  quotes: ["error", "double"],
  //....
  //更多规则可查看http://eslint.cn/docs/rules/
 }
}

使用JavaScript注释启用或禁止指定规则

/* eslint-disable */
alert('message');
/* eslint-enable no-alert, no-console*/
...

层叠配置

ESlint支持层叠配置,检测文件的规则是其目录层级结构中所有.eslintrc文件的组合,当规则冲突的时候,离检测文件最近的规则优先。

默认情况下,ESlint会沿着父级目录网上寻找配置文件,直到根目录。如果配置文件中有root: true,则ESlint会停止在父级目录中查找。

五、配置过程中出现的问题

出现错误:Use the latest vue-eslint-parser。

解决方法: 把parser: "babel-eslint"移动到parserOptions中。

{
 //parser: "babel-eslint",
 parserOptions: {
  parser: "babel-eslint",
  //...
 }
}

问题原因: eslint-plugin-vue中的很多规则都需要vue-eslint-parser检查<template>, vue-eslint-parser和babel-parser二者有冲突。

参考链接

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
2012年开发人员的16款新鲜的jquery插件体验分享
Dec 28 Javascript
js读取csv文件并使用json显示出来
Jan 09 Javascript
window.onload与$(document).ready()的区别分析
May 30 Javascript
JQuery创建DOM节点的方法
Jun 11 Javascript
JQuery fileupload插件实现文件上传功能
Mar 18 Javascript
原生js实现tab选项卡切换
Mar 23 Javascript
javascript 数据存储的常用函数总结
Jun 01 Javascript
使用travis-ci如何持续部署node.js应用详解
Jul 30 Javascript
Vue组件开发之LeanCloud带图形校验码的短信发送功能
Nov 07 Javascript
基于react后端渲染模板引擎noox发布使用
Jan 11 Javascript
微信小程序scroll-view隐藏滚动条的方法详解
Mar 25 Javascript
原生JavaScript实现进度条
Feb 19 Javascript
利用jqgrid实现上移下移单元格功能
Nov 07 #Javascript
React 源码中的依赖注入方法
Nov 07 #Javascript
监听angularJs列表数据是否渲染完毕的方法示例
Nov 07 #Javascript
详解react native页面间传递数据的几种方式
Nov 07 #Javascript
微信小程序使用npm支持踩坑
Nov 07 #Javascript
Angular Material Icon使用详解
Nov 07 #Javascript
详解Webpack loader 之 file-loader
Nov 07 #Javascript
You might like
php设计模式 Mediator (中介者模式)
2011/06/26 PHP
基于initPHP的框架介绍
2013/04/18 PHP
ThinkPHP模板判断输出Defined标签用法详解
2014/06/30 PHP
为PHP安装imagick时出现Cannot locate header file MagickWand.h错误的解决方法
2014/11/03 PHP
PHP cookie,session的使用与用户自动登录功能实现方法分析
2019/06/05 PHP
php生成HTML文件的类方法
2019/10/11 PHP
纯js实现的论坛常用的运行代码的效果
2008/07/15 Javascript
也说JavaScript中String类的replace函数
2011/09/22 Javascript
Jquery使用Firefox FireBug插件调试Ajax步骤讲解
2013/12/02 Javascript
用js来刷新当前页面保留参数的具体实现
2013/12/23 Javascript
javascript轻松实现当鼠标移开时已弹出子菜单自动消失
2013/12/29 Javascript
学习使用AngularJS文件上传控件
2016/02/16 Javascript
浅谈jQuery中的checkbox问题
2016/08/10 Javascript
vue2.0父子组件及非父子组件之间的通信方法
2017/01/21 Javascript
JavaScript编写九九乘法表(两种任选)
2017/02/04 Javascript
Angular JS 生成动态二维码的方法
2017/02/23 Javascript
Vue2.0 axios前后端登陆拦截器(实例讲解)
2017/10/27 Javascript
Node.js npm命令运行node.js脚本的方法
2018/10/10 Javascript
解决layui的input独占一行的问题
2019/09/10 Javascript
基于javascript的无缝滚动动画实现2
2020/08/07 Javascript
Python抽象类的新写法
2015/06/18 Python
Python实现将一个大文件按段落分隔为多个小文件的简单操作方法
2017/04/17 Python
Python随机生成均匀分布在单位圆内的点代码示例
2017/11/13 Python
python3学习笔记之多进程分布式小例子
2018/02/13 Python
在python 不同时区之间的差值与转换方法
2019/01/14 Python
python实现彩色图转换成灰度图
2019/01/15 Python
Python GUI编程完整示例
2019/04/04 Python
Python3.8对可迭代解包的改进及用法详解
2019/10/15 Python
python字典setdefault方法和get方法使用实例
2019/12/25 Python
助人为乐表扬信范文
2014/01/14 职场文书
工艺员岗位职责
2014/02/11 职场文书
2015年上半年党建工作总结
2015/03/30 职场文书
2015年高三教学工作总结
2015/07/21 职场文书
2015年中秋寄语
2015/07/31 职场文书
宾馆安全管理制度
2015/08/06 职场文书
使用Python通过企业微信应用给企业成员发消息
2022/04/18 Python