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 相关文章推荐
JQuery中$之选择器用法介绍
Apr 05 Javascript
变量声明时命名与变量作为对象属性时命名的区别解析
Dec 06 Javascript
jQuery获取节点和子节点文本的方法
Jul 22 Javascript
用js代码和插件实现wordpress雪花飘落效果的四种方法
Dec 15 Javascript
JavaScript实现MIPS乘法模拟的方法
Apr 17 Javascript
Google Maps基础及实例解析
Aug 06 Javascript
Knockout结合Bootstrap创建动态UI实现产品列表管理
Sep 14 Javascript
jQuery实现动态添加节点与遍历节点功能示例
Nov 09 jQuery
vue.js中created方法作用
Mar 30 Javascript
vue App.vue中的公共组件改变值触发其他组件或.vue页面监听
May 31 Javascript
Vue利用Blob下载原生二进制数组文件
Sep 25 Javascript
JavaScript实现筛选数组
Mar 02 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
使用zend studio for eclipse不能激活代码提示功能的解决办法
2009/10/11 PHP
PHP中加密解密函数与DES加密解密实例
2014/10/17 PHP
Yii2中OAuth扩展及QQ互联登录实现方法
2016/05/16 PHP
Laravel 5.3 学习笔记之 安装
2016/08/28 PHP
PHP获取远程http或ftp文件的md5值的方法
2019/04/15 PHP
Javascript倒计时代码
2010/08/12 Javascript
网页下载文件期间如何防止用户对网页进行其他操作
2014/06/27 Javascript
js实现的Easy Tabs选项卡用法实例
2015/09/06 Javascript
JavaScript中setTimeout和setInterval函数的传参及调用
2016/03/11 Javascript
微信小程序 动态传参实例详解
2017/04/27 Javascript
简单实现js点击展开二级菜单功能
2017/05/16 Javascript
微信小程序多列选择器range-key使用详解
2020/03/30 Javascript
jQuery轮播图实例详解
2018/08/15 jQuery
详解vscode中vue代码颜色插件
2018/10/11 Javascript
vue在响应头response中获取自定义headers操作
2020/07/24 Javascript
浅谈vant组件Picker 选择器选单选问题
2020/11/04 Javascript
Python HTMLParser模块解析html获取url实例
2015/04/08 Python
用Python编写web API的教程
2015/04/30 Python
python制作一个桌面便签软件
2015/08/09 Python
浅析Python中的多条件排序实现
2016/06/07 Python
Python常用库大全及简要说明
2020/01/17 Python
关于pycharm 切换 python3.9 报错 ‘HTMLParser‘ object has no attribute ‘unescape‘ 的问题
2020/11/24 Python
解决virtualenv -p python3 venv报错的问题
2021/02/05 Python
英国知名化妆品网站:Revolution Beauty(原TAM Beauty)
2018/02/28 全球购物
机械系大学毕业生推荐信
2013/11/27 职场文书
个人自我评价分享
2013/12/20 职场文书
2014道德模范事迹材料
2014/02/16 职场文书
品质主管岗位职责
2014/03/16 职场文书
勤奋学习演讲稿
2014/05/10 职场文书
教师暑期培训感言
2014/08/15 职场文书
红领巾广播站广播稿
2014/10/19 职场文书
护理实习生带教计划
2015/01/16 职场文书
幼儿园大班教师个人总结
2015/02/05 职场文书
2015年事业单位办公室文员工作总结
2015/04/24 职场文书
运动会主持词大全
2015/07/02 职场文书
Python中time标准库的使用教程
2022/04/13 Python