1:Eslint概念ESLint是一个用于识别和报告ECMAScript/JavaScript代码中模式匹配的工具。它的目标是确保代码的一致性并避免错误。说白了,你的组长要你按照他的代码编写风格来写代码(配置插件和完整插件的规则)。可能这个规则是从一个大团队里拿来的(各种比较规范的规则配置)2:Eslint的常用配置解析器:配置解析器,将源码解析成AST来验证规则。默认是Espree,解析ECMAScript5特性。当然,也可以使用其他解析器。目前常用的有babel-eslint、typescript-eslint-parser等。parserOptions:解析的配置,列出常用配置ecmaVersion:解析的ECMAScript版本,默认ECMAScript5sourceType:解析的模块类型。scriptormodule(ECMAScriptmodule)env:配置解析环境,env的值默认会为eslint设置一些全局变量,比如browser,会设置浏览器中的全局变量,jQuery,添加jQuery全局变量,这些values可以共存,给出查看env环境变量的链接isnotdefinedno-undef//globals:{//globalVarible:false;//}//会让它对plugins:插件,通过插件增强eslint的功能,并且可以输出一些额外的配置,你可以去npm搜索eslint-plugin-*找到一些常用的插件规则:rules,这里是设置一些项目常用的规则,规则设置可以是eslint的一些默认规则,也可以是eslint中的一些规则插件,如vue/*,0->off关闭规则1->warn上报警告2->error上报错误级别。如果有些规则还有其他选项,可以配置成数组字面量形式{"rules":{"eqeqeq":"off","curly":"error","quotes":["error","double"]//代码中使用了双引号,级别为error}}root:会在当前目录下查找当前文件的eslint配置文件,如果不存在则从parent查找依次找到根目录。为了将eslint限制在本项目中,可以在项目根目录下的eslint中配置root:true,它会停止向上搜索extends:inheritance的概念,继承之前配置的规则,还有你可以修改继承的规则。修改分为两类。仅修改错误级别或整体覆盖规则。例如,您可以使用eslint:recommended启用eslint的核心规则。这些规则可以在以下链接中找到。eslint:推荐规则,当然你也可以继承一些已有的第三方配置,比如eslint-plugin-vuemodule.exports={extends:[//在此处添加更多通用规则集,例如://'eslint:recommended','plugin:vue/recommended'],rules:{//覆盖/添加规则设置这里,如://'vue/no-unused-vars':'error'}}以上配置基本可以满足日常开发的需要,内联注释可以帮助我们在源码文件中控制Eslint,比如忽略某行验证,在源代码文件中添加全局变量等//用于禁用eslint检测的代码块/*eslint-disable*/alert('foo');/*eslint-enable*///如下行禁止规则no-alertalert('foo');//eslint-disable-lineno-alert//这个文件添加了一些全局变量/*globalvar1,var2*///很多类似的内联注释来控制eslint的行为,可以去官网参考3.给出一个eslint配置进行分析。简述一个项目的需求,配置项目的源码转换。使用巴别塔。需要转es6转es5,使用vue开发。需要控制*.vue文件代码的统一风格。使用一些现成的标准控件,比如VueCli3.0启用的airbnbconfig。根据项目成员的使用习惯,大家约定一些常规开关//使用VueCli3.0生成项目结构时,eslintrc.js的配置如下module.exports={root:true,//project-leveleslint配置env:{node:true//node环境,源码处理时不会报错},'extends':['plugin:vue/essential',//Vue项目,继承了eslint的规则-plugin-vue,文末会给出官网链接'eslint:recommended'//这是eslint官方推荐的配置,eslint规则页面勾选的都是推荐的]],//根据项目需求和团队规则制定自己的规则:{'no-console':进程.env。NODE_ENV==='生产'?'错误':'关闭','无调试器':process.env.NODE_ENV==='生产'?'error':'off'},parserOptions:{parser:'babel-eslint'}}VueCli3.0官方的配置其实已经够用了。自己配置一些自定义规则,再说几个业务场景,再修改eslint配置。在源码中使用document等变量时Requiresmodule.exports={env:{browser:true,//使用window和document浏览器全局变量}}在Vue初始化时给出一个vm=newVue({})引用,这个会在global中使用module.exports={globals:{vm:false,//如果在源码中使用vm,则不会报错,false也禁止修改vmDDLogin:false,//钉钉登录全局变量}}修改VueCli3.0默认继承规则,不适用eslint:recommended使用airbnb-baseconfig(不包括React部分)#使用npm5+这里airbnb-base依赖eslint和eslint-plugin-import(一些验证aboutimport)npxinstall-peerdeps--deveslint-config-airbnb-basemodule.exports={'extend':['plugin:vue/recommended','airbnb-base'],}根据团队模块制定规则.exports={规则:{'vue/no-v-html':'off',//这里自定义继承配置}}4:eslintpluginorconfig给出了以下常用的eslint-plugin-(可以增强eslint功能,同时提供一些rules)和eslint-config-(Shareableconfiguration,只是组合规则导出一个配置对象)eslint-plugin-vue(Vuetemplate,scriptverification),eslint-plugin-react(ReactVerification)eslint-plugin-html(用于html中js部分的校验)eslint-plugin-import(用于ES6Module导入部分的校验),可以配合webpackalias别名判断导入资源是否存在eslint-plugin-Promise(promise的校验)去npm去自己搜索,eslint-plugin,只要会转换AST,什么都可以,什么校验都可以总结:代码规范没有标准,我们完全可以自定义自己的规则,也可以使用一些现成的规则并设置自己的规则。作为一个团队,统一的代码风格还是很有必要的。本文只是对eslint的基本使用做一个简单的记录,剩下的还需要读者结合自己的项目使用一些规则,开发一些插件来满足需求。eslint中文官网eslint-plugin-vue官网npm官网,搜索commonplugin或config
