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 相关文章推荐
js数组循环遍历数组内所有元素的方法
Jan 18 Javascript
每天一篇javascript学习小结(Function对象)
Nov 16 Javascript
基于js实现微信发送好友如何分享到朋友圈、微博
Nov 30 Javascript
JS验证邮件地址格式方法小结
Dec 01 Javascript
jquery ztree异步搜索(搜叶子)实践
Feb 25 Javascript
JavaScript表单验证实现代码
May 22 Javascript
Thinkjs3新手入门之添加一个新的页面
Dec 06 Javascript
vue组件tabbar使用方法详解
Nov 06 Javascript
layer.alert自定义关闭回调事件的方法
Sep 27 Javascript
JS表格的动态操作完整示例
Jan 13 Javascript
微信小程序实现电子签名并导出图片
May 27 Javascript
详解Vue数据驱动原理
Nov 17 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隐形一句话后门,和ThinkPHP框架加密码程序(base64_decode)
2011/11/02 PHP
PHP图片验证码制作实现分享(全)
2012/05/10 PHP
分享一个Laravel好用的Cache宏
2015/03/02 PHP
善用事件代理,警惕闭包的性能陷阱。
2011/01/20 Javascript
ASP.NET jQuery 实例14 在ASP.NET form中校验时间范围
2012/02/03 Javascript
javascript实现获取字符串hash值
2015/05/10 Javascript
原生javascript 学习之js变量全面了解
2016/07/14 Javascript
一个炫酷的Bootstrap导航菜单
2016/12/28 Javascript
Vue.js实现表格动态增加删除的方法(附源码下载)
2017/01/20 Javascript
Javascript中构造函数要注意的一些坑
2017/01/23 Javascript
jQuery绑定事件方法及区别(bind,click,on,live,one)
2017/08/14 jQuery
vue.js中导出Excel表格的案例分析
2019/06/11 Javascript
Vue代码整洁之去重方法整理
2019/08/06 Javascript
解决antd 表单设置默认值initialValue后验证失效的问题
2020/11/02 Javascript
python读取Android permission文件
2013/11/01 Python
Python中获取网页状态码的两个方法
2014/11/03 Python
Python基于Tkinter的HelloWorld入门实例
2015/06/17 Python
Python将一个CSV文件里的数据追加到另一个CSV文件的方法
2018/07/04 Python
对python中dict和json的区别详解
2018/12/18 Python
python的命名规则知识点总结
2019/10/04 Python
django 简单实现登录验证给你
2019/11/06 Python
Python OpenCV视频截取并保存实现代码
2019/11/30 Python
pyecharts动态轨迹图的实现示例
2020/04/17 Python
scrapy爬虫:scrapy.FormRequest中formdata参数详解
2020/04/30 Python
css3学习心得分享
2013/08/19 HTML / CSS
详解H5本地储存Web Storage
2017/07/03 HTML / CSS
html5利用canvas实现颜色容差抠图功能
2019/12/23 HTML / CSS
欧洲最大的美妆零售网站:Feelunique
2017/01/14 全球购物
网站域名和主机:Domain.com
2019/04/01 全球购物
英智兴达软件测试笔试题
2016/10/12 面试题
学习十八届三中全会精神实施方案
2014/02/17 职场文书
《一株紫丁香》教学反思
2014/02/19 职场文书
写得不错的求职信范文
2014/07/11 职场文书
学习保证书
2015/01/17 职场文书
2016年度创先争优活动总结
2016/04/05 职场文书
python_tkinter弹出对话框创建
2022/03/20 Python