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 相关文章推荐
javascript中数组的concat()方法使用介绍
Dec 18 Javascript
JS保留两位小数,多位小数的示例代码
Jan 07 Javascript
gridview生成时如何去掉style属性中的border-collapse
Sep 30 Javascript
JS获取网页图片name属性的方法
Apr 01 Javascript
JavaScript实现随机替换图片的方法
Apr 16 Javascript
jquery制作属于自己的select自定义样式
Nov 23 Javascript
轻松实现js图片预览功能
Jan 18 Javascript
用JS实现图片轮播效果代码(一)
Jun 26 Javascript
JavaScript之DOM_动力节点Java学院整理
Jul 03 Javascript
JS设置随机出现2个数字的实例代码
Jul 19 Javascript
[jQuery] 事件和动画详解
Mar 05 jQuery
微信小程序动态添加和删除组件的现实
Feb 28 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开发中常用的三个表单验证函数使用小结
2010/03/03 PHP
利用Memcached在php下实现session机制 替换PHP的原生session支持
2010/08/21 PHP
php函数连续调用实例分析
2015/07/30 PHP
eclipse php wamp配置教程
2016/06/30 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
2017/08/28 PHP
脚本之家贴图转换+转贴工具用到的js代码超级推荐
2007/04/05 Javascript
List the Codec Files on a Computer
2007/06/11 Javascript
appendChild() 或 insertBefore()使用与区别介绍
2013/10/11 Javascript
javascript轻量级模板引擎juicer使用指南
2014/06/22 Javascript
javascript 动态样式添加的简单实现
2016/10/11 Javascript
js时间戳格式化成日期格式的多种方法介绍
2017/02/16 Javascript
基于Vuejs和Element的注册插件的编写方法
2017/07/03 Javascript
表格展示利器 Bootstrap Table实例代码
2017/09/06 Javascript
Node.JS循环删除非空文件夹及子目录下的所有文件
2018/03/12 Javascript
jQuery动态生成的元素绑定事件操作实例分析
2019/05/04 jQuery
详解微信小程序回到顶部的两种方式
2019/05/09 Javascript
JS浮点数运算结果不精确的Bug解决
2019/08/01 Javascript
在Python中使用元类的教程
2015/04/28 Python
利用python3随机生成中文字符的实现方法
2017/11/24 Python
Python爬虫爬取新浪微博内容示例【基于代理IP】
2018/08/03 Python
用python爬取租房网站信息的代码
2018/12/14 Python
python 中的[:-1]和[::-1]的具体使用
2020/02/13 Python
如何基于Python和Flask编写Prometheus监控
2020/11/25 Python
Html5移动端适配IphoneX等机型的方法
2019/06/25 HTML / CSS
户外拓展活动方案
2014/02/11 职场文书
幼儿园爱国卫生月活动总结
2014/06/30 职场文书
2014年党员评议表自我评价
2014/09/27 职场文书
2014年政工师工作总结
2014/12/18 职场文书
2015公务员年度考核评语
2015/03/25 职场文书
教导处教学工作总结
2015/08/12 职场文书
禁毒主题班会教案
2015/08/14 职场文书
2016秋季田径运动会广播稿
2015/12/21 职场文书
合同补充协议书
2016/03/24 职场文书
2019年聘任书的写作格式及范文!
2019/07/03 职场文书
解决Vue+SpringBoot+Shiro跨域问题
2021/06/09 Vue.js
Python机器学习应用之工业蒸汽数据分析篇详解
2022/01/18 Python