当前位置: 首页 > 后端技术 > Node.js

EsLint简介

时间:2023-04-03 15:36:36 Node.js

ESLint是一个插件式的javascript代码检测工具,可以用来检查常见的JavaScript代码错误和代码风格检查,让我们可以根据自己的喜好指定一套ESLint配置,然后应用到书面项目中,实现辅助编码标准的实施,有效控制项目代码质量。安装ESLint安装:本地安装,全局安装1、本地安装$npminstalleslint--save-dev生成配置文件$./node_modules/.bin/eslint--init之后,你可以在任意文件或目录上运行ESLint为如下:$./node_modules/.bin/eslintindex.jsindex.js是你需要测试的js文件。您使用的任何插件或共享配置(必须在本地安装才能与本地安装的ESLint一起使用)。2.全局安装如果希望ESLint对所有项目都可用,建议全局安装ESLint。$npminstall-geslint生成配置文件后$eslint--init可以在任意文件或目录运行ESLint$eslintindex.jsPS:eslint--init用于每个项目设置和配置eslint,将在本地执行安装的ESLint及其插件的目录。如果您更喜欢使用全局安装的ESLint,则您在配置中使用的任何插件都必须全局安装。使用1.在项目根目录下生成一个package.json文件(配置ESLint的项目必须有package.json文件,如果没有可以使用npminit-y生成)$npminit-y2.安装eslint(安装方式根据个人项目需要安装,这里是全局安装)$npminstall-geslint3,创建一个index.js文件,在里面写一个函数。函数合并(){varret={};for(variinarguments){varm=arguments[i];for(varjinm)ret[j]=m[j];}returnret;}console.log(merge({a:123},{b:456}));执行nodeindex.js,输出为{a:123,b:456}$nodeindex.js{a:123,b:456}用eslint检查$eslintindex.jsOops!出了些问题!:(ESLint:4.19.1.ESLint找不到配置文件。要为此项目设置配置文件,请运行:eslint--initESLintlookedforconfigurationfilesinE:\website\demo5\jsanditsancestors.如果没有找到,它就会在你的主目录中查找。如果你认为你已经有了配置文件或者需要更多帮助,请访问ESLint聊天室:https://gitter.im/eslint/eslint执行结果是失败,因为没有找到对应的配置文件,个人觉得这个eslint最主要的还是配置问题。新建一个配置文件$eslint--init生成过程中需要选择生成规则,支持环境等,下面介绍一下我自己的一些生成选项?您想如何配置ESLint?回答有关您的风格的问题?你在使用ECMAScript6特性吗?是的?你在使用ES6模块吗?是的?您的代码将在哪里运行?浏览器?你使用CommonJS吗?字符串?单身的?你使用什么行结尾?视窗?你需要分号吗?不?您希望您的配置文件采用什么格式?JavaScript生成的内容在.eslintrc.js文件中,文件内容如下module.exports={"env":{"browser":true,"commonjs":true,"es6":true},"extends":"eslint:recommended","parserOptions":{"sourceType":"module"},"rules":{"indent":["error","tab"],"linebreak-style":["error","windows"],"quotes":["error","single"],"semi":["error","never"]}};不过生成的文件中已经有一些配置了,删除大部分内容留一个extends,剩下的自己填module.exports={"extends":"eslint:recommended"};eslint:recommended配置,其中包含一系列核心规则,可以报告一些常见问题。重新执行eslintindex.js,输出如下10:1errorUnexpectedconsolestatementno-console10:1error'console'isnotdefinedno-undef?2problems(2errors,0warnings)Unexpectedconsolestatementno-console--Can'tuseconsole'console'isnotdefinedno-undef---console变量未定义,不能用undefined变量一一解决,不能使用console提示,那么我们就直接禁用no-console,在配置文件中加入rulesmodule.exports={extends:'eslint:recommended',rules:{'no-console':'off',},};配置规则写在rules对象中,其中key代表规则名称,value代表规则配置。然后就是解决no-undef:报错的原因是JavaScript有很多运行环境,比如浏览器和Node.js,很多软件系统都是使用JavaScript作为它们的脚本引擎,比如PostgreSQL就支持用JavaScript写存储引擎,并且在这些操作环境中可能不存在控制台对象。另外,浏览器环境中有window对象,Node.js中没有;在Node.js中有一个进程对象,但在浏览器环境中没有。所以在配置文件中我们还需要指定程序的目标环境:module.exports={extends:'eslint:recommended',env:{node:true,},rules:{'no-console':'off',}};重新执行校验时,不会有提示输出,说明index.js已经完全通过校验。配置方式有两种:文件配置方式和代码注释配置方式(推荐使用文件配置方式,相对独立,易于维护)。文件配置的使用方式:在项目根目录下,新建一个名为.eslintrc的文件,并在该文件中添加一些检查规则。文件配置方式env:你的脚本会在什么环境下运行?environment可以预置其他环境的全局变量,比如browser、node环境变量、es6环境变量、mocha环境变量等'env':{'browser':true,'commonjs':true,'es6':true},globals:额外的全局变量globals:{vue:true,wx:true},rules:有三种错误等级,分别是开启规则和发生错误时的报告等级:0or'off':关闭规则。1或'warn':开启规则并作为警告(不会导致检查失败)。2or'error':打开规则并将其视为错误(退出代码1,检查失败)。参数说明:参数一:错误级别参数二:处理方式配置代码注释方式使用JavaScript注释将配置信息直接嵌入文件示例:忽略no-undef检查/*eslint-disableno-undef*/Ignoreno-newcheck/*eslint-disableno-new*/Settingcheck/*eslinteqeqeq:off*//*eslinteqeqeq:0*/有很多配置和规则,有兴趣的同学可以参考这里:规则使用共享配置文件我们使用的是配置js文件根据extends:'eslint:recommended'进行配置,但是很多时候我们需要制定很多规则,写在一个文件里会变得很臃肿,管理起来也很麻烦。创建一个新文件,例如eslint-config-public.js,并在文件内容中添加一两个规则。module.exports={extends:'eslint:recommended',env:{node:true,},rules:{'no-console':'off','indent':['error',4],'quotes':['错误','单一'],},};然后将原来的.eslintrc.js文件内容稍作改动,删除所有配置,留下一个extends。module.exports={extends:'./eslint-config-public.js',};要测试的是什么,就是看看限制缩进是不是4个空格和使用单引号的字符串等等,然后再测试下,运行eslintindex.js,结果没问题,但是如果加个空格什么的在varret={}前面;在index.js中,结果会立即不同。2:1错误预期缩进4个空格,但发现5个缩进?1个问题(1个错误,0个警告)1个错误,0个警告可能可以使用`--fix`选项修复。有4个空格,但是在文件的第二行发现有5个空格,说明公共配置文件eslint-config-public.js已经生效。除了这些基础配置外,npm上还有很多已发布的ESLint配置,也可以通过安装使用。配置名称一般以eslint-config-为前缀。一般我们使用的eslint是全局安装的,使用的eslint-config-module也必须全局安装,否则无法加载。在执行eslint检查的时候,我们经常会看到提示“--flx”选项,在执行eslint检查的时候加入这个选项,会自动修复一些报错的部分(注意这只是部分,不是全部)比如我们在规则中添加一个no-extra-semi:禁止使用不必要的分号。'no-extra-semi':'error'然后,我们在index.jsfunctionmerge(){varret={};的末尾添加一个额外的分号for(variinarguments){varm=arguments[i];for(varjinm)ret[j]=m[j];}returnret;;}console.log(merge({a:123},{b:456}));执行eslintindex.js,结果如下:7:16errorUnnecessarysemicolonno-extra-semi7:16errorUnreachablecodeno-unreachable?2problems(2errors,0warnings)1error,0warningspotentiallyfixablewith`--fix`选项。然后我们执行eslintindex.js--fix会自动修复,index.js中多余的分号会被修复消失。综上所述,以上是我在学习eslint的过程中整理的一些资料。不算太全面,但对于像我这样的初学者来说已经足够了。