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使用手册之 事件处理
Mar 24 Javascript
js 屏蔽鼠标右键脚本附破解方法
Dec 03 Javascript
JavaScript中按位“异或”运算符使用介绍
Mar 14 Javascript
jQuery窗口、文档、网页各种高度的精确理解
Jul 02 Javascript
node.js中watch机制详解
Nov 17 Javascript
浅谈Sizzle的“编译原理”
Apr 14 Javascript
js点击按钮实现水波纹效果代码(CSS3和Canves)
Sep 15 Javascript
详解微信小程序——自定义圆形进度条
Dec 29 Javascript
canvas的神奇用法
Feb 03 Javascript
微信小程序 在线支付功能的实现
Mar 14 Javascript
使用vue的v-for生成table并给table加上序号的实例代码
Oct 27 Javascript
JavaScript实现多重继承的方法分析
Jan 09 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
linux iconv方法的使用
2011/10/01 PHP
php目录操作实例代码
2014/02/21 PHP
php获得文件大小和文件创建时间的方法
2015/03/13 PHP
php安装ssh2扩展的方法【Linux平台】
2016/07/20 PHP
PHP自定义函数实现数组比较功能示例
2017/10/19 PHP
PhpStorm本地断点调试的方法步骤
2018/05/21 PHP
PHP利用百度ai实现文本和图片审核
2019/05/08 PHP
PHP cookie与session会话基本用法实例分析
2019/11/18 PHP
基于jQuery的history历史记录插件
2010/12/11 Javascript
jQuery之字体大小的设置方法
2014/02/27 Javascript
scrollWidth,clientWidth,offsetWidth的区别
2015/01/13 Javascript
JS实现同时搜索百度和必应的方法
2015/01/27 Javascript
使用struts2+Ajax+jquery验证用户名是否已被注册
2016/03/22 Javascript
jQuery中 $ 符号的冲突问题及解决方案
2016/11/04 Javascript
Jquery Easyui验证组件ValidateBox使用详解(20)
2016/12/18 Javascript
vue实现列表的添加点击
2016/12/29 Javascript
BootStrap表单验证实例代码
2017/01/13 Javascript
angular中的http拦截器Interceptors的实现
2017/02/21 Javascript
javascript 操作cookies详解及实例
2017/02/22 Javascript
JavaScript+H5实现微信摇一摇功能
2018/05/23 Javascript
详解webpack引入第三方库的方式以及注意事项
2019/01/15 Javascript
JavaScript中Dom操作实例详解
2019/07/08 Javascript
javascript canvas API内容整理
2020/02/16 Javascript
vue项目中使用bpmn为节点添加颜色的方法
2020/04/30 Javascript
解决vue watch数据的方法被调用了两次的问题
2020/11/07 Javascript
Python中的闭包实例详解
2014/08/29 Python
深入源码解析Python中的对象与类型
2015/12/11 Python
python itchat实现微信好友头像拼接图的示例代码
2017/08/14 Python
基于python 将列表作为参数传入函数时的测试与理解
2020/06/05 Python
法学专业应届生求职信
2013/10/16 职场文书
县优秀教师事迹材料
2014/01/31 职场文书
人力资源管理专业应届生求职信
2014/04/24 职场文书
学位证书委托书
2014/09/30 职场文书
学校实习推荐信
2015/03/27 职场文书
Golang: 内建容器的用法
2021/05/05 Golang
Win11控制面板快捷键是什么?Win11打开控制面板的方法汇总
2022/07/07 数码科技