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应该怎样学
Apr 16 Javascript
js动态添加onload、onresize、onscroll事件(另类方法)
Dec 26 Javascript
利用原生JavaScript获取元素样式只是获取而已
Oct 08 Javascript
js实现文本框输入文字个数限制代码
Dec 25 Javascript
AngularJS初始化静态模板详解
Jan 14 Javascript
深入理解AngularJS中的ng-bind-html指令
Mar 27 Javascript
解决Extjs下拉框不显示的问题
Jun 21 Javascript
详解tween.js 中文使用指南
Jan 05 Javascript
Vue表单类的父子组件数据传递示例
May 03 Javascript
js 实现 list转换成tree的方法示例(数组到树)
Aug 18 Javascript
ElementUI之Message功能拓展详解
Oct 18 Javascript
详解JavaScript中的this指向问题
Feb 05 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 批量生成html,txt文件的实现代码
2013/06/26 PHP
Prototype使用指南之hash.js
2007/01/10 Javascript
JS版网站风格切换实例代码
2008/10/06 Javascript
js 对象是否存在判断
2009/07/15 Javascript
jquery实现checkbox全选全不选的简单实例
2013/12/31 Javascript
jQuery 滑动方法slideDown向下滑动元素
2014/01/16 Javascript
javascript结合ajax读取txt文件内容
2014/12/05 Javascript
分享十五款 jQuery 社交网络分享插件
2015/05/16 Javascript
深入浅析同源策略和跨域访问
2015/11/26 Javascript
纯js和css完成贪吃蛇小游戏demo
2016/09/01 Javascript
Javascript 函数的四种调用模式
2016/11/05 Javascript
Angular2里获取(input file)上传文件的内容的方法
2017/09/05 Javascript
js实现随机点名系统(实例讲解)
2017/10/18 Javascript
微信小程序表单弹窗实例
2018/07/19 Javascript
Node.js npm命令运行node.js脚本的方法
2018/10/10 Javascript
微信小程序开发搜索功能实现(前端+后端+数据库)
2020/03/04 Javascript
js实现经典贪吃蛇小游戏
2020/03/19 Javascript
Python解决鸡兔同笼问题的方法
2014/12/20 Python
Python基于hashlib模块的文件MD5一致性加密验证示例
2018/02/10 Python
python实现简单http服务器功能
2018/09/17 Python
对Python获取屏幕截图的4种方法详解
2019/08/27 Python
Python如何优雅获取本机IP方法
2019/11/10 Python
Python迷宫生成和迷宫破解算法实例
2019/12/24 Python
pytorch数据预处理错误的解决
2020/02/20 Python
巴西服装和鞋子购物网站:Marisa
2018/10/25 全球购物
英国领先的在线礼品店:Getting Personal
2019/09/24 全球购物
Linux机考试题
2015/10/16 面试题
会计专业大学生求职信范文
2014/01/28 职场文书
社区党务公开实施方案
2014/03/18 职场文书
房屋出售协议书
2014/04/10 职场文书
安全教育日主题班会
2015/08/13 职场文书
css3实现背景图片颜色修改的多种方式
2021/04/13 HTML / CSS
vue+element ui实现锚点定位
2021/06/29 Vue.js
Linux安装apache服务器的配置过程
2021/11/27 Servers
Python写情书? 10行代码展示如何把情书写在她的照片里
2022/04/21 Python
解决Mysql报错 Table 'mysql.user' doesn't exist
2022/05/06 MySQL