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 相关文章推荐
超级简单的图片防盗(HTML),好用
Apr 08 Javascript
js修改地址栏URL参数解决url参数问题
Dec 15 Javascript
Jquery插件编写简明教程
Mar 25 Javascript
node.js使用require()函数加载模块
Nov 26 Javascript
jQuery表单美化插件jqTransform使用详解
Apr 12 Javascript
浅谈JavaScript异常处理语句
Jun 26 Javascript
微信小程序 实例应用(记账)详解
Sep 28 Javascript
在JSP中如何实现MD5加密的方法
Nov 02 Javascript
jQuery用FormData实现文件上传的方法
Nov 21 Javascript
JS正则获取HTML元素的方法
Mar 31 Javascript
java和js实现的洗牌小程序
Sep 30 Javascript
Vue v-for中的 input 或 select的值发生改变时触发事件操作
Aug 31 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 auth_http类库进行身份效验
2009/03/19 PHP
在mysql数据库原有字段后增加新内容
2009/11/26 PHP
PHP解析目录路径的3个函数总结
2014/11/18 PHP
写的htc的数据表格
2007/01/20 Javascript
JQuery中根据属性或属性值获得元素(6种情况获取方法)
2013/01/17 Javascript
jquery根据属性和index来查找属性值并操作
2014/07/25 Javascript
jQuery异步加载数据并添加事件示例
2014/08/24 Javascript
jQuery在ul中显示某个li索引号的方法
2015/03/17 Javascript
谷歌showModalDialog()方法不兼容出现对话窗口的解决办法
2016/02/15 Javascript
jquery实时获取时间的简单实例
2017/01/26 Javascript
angularJs中datatable实现代码
2017/06/03 Javascript
vue组件实现文字居中对齐的方法
2017/08/23 Javascript
React 使用browserHistory项目访问404问题解决
2018/06/01 Javascript
Angular CLI 使用教程指南参考小结
2019/04/10 Javascript
JS使用正则表达式实现常用的表单验证功能分析
2020/04/30 Javascript
在Angular中实现一个级联效果的下拉框的示例代码
2020/05/20 Javascript
[48:20]OpTic vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python实现bitmap数据结构详解
2014/02/17 Python
python 调用win32pai 操作cmd的方法
2017/05/28 Python
解决Python3中的中文字符编码的问题
2018/07/18 Python
在python中只选取列表中某一纵列的方法
2018/11/28 Python
Python字符串的全排列算法实例详解
2019/01/07 Python
pycharm 关掉syntax检查操作
2020/06/09 Python
keras中的History对象用法
2020/06/19 Python
CSS3制作酷炫的三维相册效果
2016/07/01 HTML / CSS
纯CSS3实现鼠标滑过按钮动画第二节
2020/07/16 HTML / CSS
网易微博Web App用HTML5开发的过程介绍
2012/06/13 HTML / CSS
西班牙国家航空官方网站:Iberia
2017/11/16 全球购物
学校食堂采购员岗位职责
2013/12/05 职场文书
好家长事迹材料
2014/01/23 职场文书
关于中国梦的演讲稿
2014/04/23 职场文书
服务理念标语
2014/06/18 职场文书
2015年暑期见闻
2015/07/14 职场文书
2015年社区国庆节活动总结
2015/07/30 职场文书
践行三严三实心得体会(2016推荐篇)
2016/01/06 职场文书
Java存储没有重复元素的数组
2022/04/29 Java/Android