ESLint入门
一、ESLint是什么?
ESLint是一个用于识别和报告ECMAScript/JavaScript中代码格式的工具,目的是使代码风格更加统一和避免错误。ESLint的理念是可扩展、每条规则独立、不内置编码风格。
二、为什么要使用ESLint?
在多人协作时,统一的代码风格更具可读性、可维护性。即使是单人开发,也可以使用ESLint来规范自己的书写规范。毕竟,规范化代码也是提升效率的一个方面。
而且,ESLint可以集成到主流的编辑器和构建工具中,以便我们在编写的代码的同时进行lint。
以 WebStorm 为例,只要全局安装 ESLint 或者在项目中依赖中添加 ESLint ,然后在设置里开启 ESLint 即可。其他编辑可以从官方文档(https://eslint.org/docs/user-guide/integrations)中获得具体信息。
三、如何使用ESLint?
1 安装和使用
有两种方式去安装ESLint:全局和本地。
1.1 本地安装和使用
如果要将ESLint作为项目构建系统的一部分,那么选择在本地进行安装。 您可以使用npm:
npm install eslint --save-dev
然后您需要建立一个配置文件:
./node_modules/.bin/eslint --init
接着,你可以在您的项目根目录运行ESLint:
./node_modules/.bin/eslint yourfile.js
您使用的任何插件或可共享配置也必须在本地安装,以此与本地安装的ESLint配合使用。
1.2 全局安装和使用
如果要使ESLint可以运用你的所有项目,那么选择在全局安装ESLint。 你可以使用npm:
npm install -g eslint
然后您需要建立一个配置文件:
eslint --init
接着,你可以在您的项目根目录运行ESLint:
eslint yourfile.js
您使用的任何插件或可共享配置也必须在全局安装,以此与全局安装的ESLint配合使用。
2 配置
在运行eslint --init之后,会在您的目录建立一个.eslintrc文件。在其中您将看到一些如下的配置规则:
{
"rules": {
"semi": ["error", "always"],
"quotes": ["error", "double"]
}
}
“semi”和“quotes”是ESLint中规则的名称。 第一个值是规则的错误级别,可以是以下值之一:
- "off" 或 0 - 关闭规则
- "warn" 或 1 - 将规则作为警告
- "error" 或 2 - 将规则作为错误
这三个错误级别允许您细微地控制ESLint如何应用规则。
您的.eslintrc配置文件将同样包含该行:
"extends": "eslint:recommended"
由于这一行,规则页面上标记为“”的所有规则都将被打开。
ESLint被设计为可完全配置的,配置ESLint有两种主要的方法:
- 注释配置 - 使用JavaScript注释将配置信息直接嵌入文件。
- 配置文件 - 使用JavaScript,JSON或YAML文件来指定整个目录及其所有子目录的配置信息。
这可以是格式为.eslintrc.*文件或package.json中的eslintConfig域,这两个ESLint都将自动查找和读取,也可以在命令行中指定配置文件。
有几个可配置的信息:
- Environment - 您的脚本被设计在所运行的环境。每个环境都带有一组预定义的全局变量。
- Globals - 您的脚本在执行期间访问的其他全局变量。
- Rules - 启用的规则和错误的级别。
更多配置选项和细节,看官方配置文档(http://eslint.org/docs/user-guide/configuring)。
四、常用的ESLint共享配置
因为一个配置文件可以被基础配置中的以启用的规则继承。一些公司或组织会开源出来他们使用的配置,它们以共享配置(Shareable Cinfig)的形式存在。
备注:共享配置是一个npm包,它输出一个配置对象。要确保这个包安装在ESLint能请求到的目录下。将extends的属性值指定为该对象名称即可实现继承。
1 Standard(https://github.com/standard/eslint-config-standard)
2 Airbnb(https://github.com/airbnb/javascript)
五、webpack 整合 ESLint
webpack 中通过添加 loader 的方式来使用 eslint,该 loader 名为 eslint-loader。在 webpack 中的配置如下。
/* 这是webpack配置文件的内容,省略无关部分 */
{
module: {
preLoaders: [{
test: /\.js$/, // 只针对js文件
loader: 'eslint', // 指定启用eslint-loader
include: dirVars.srcRootDir, // 指定审查范围仅为自己团队写的业务代码
exclude: [/bootstrap/], // 剔除掉不需要利用eslint审查的文件
}],
},
eslint: {
configFile: path.resolve(dirVars.staticRootDir, './.eslintrc'), // 指定eslint的配置文件在哪里
failOnWarning: true, // eslint报warning了就终止webpack编译
failOnError: true, // eslint报error了就终止webpack编译
cache: true, // 开启eslint的cache,cache存在node_modules/.cache目录里
}
}
当然也可以把 eslint-loader 放在 loaders 中,但是放置到 preLoaders 中可以先于 loader 进行处理,若 ESLint 检查到了问题就会在此停掉。如果你使用了 babel 等类似的 loader,那么通过 webpack 编译前后的代码相差就很大了,这往往导致无法 ESLint 的检查。
eslint-loader 可以采用一个配置项 eslint 来进行配置,默认会使用项目根目录下的配置文件 .eslintrc 来读取配置信息。
ESLint入门的更多相关文章
- eslint 入门项目搭建过程
github 地址 : https://github.com/gebin/eslint-demo 运行该项目 npm install npm start 访问 http://localhost:900 ...
- ESLint系列:ESLint入门安装及简单配置
1.eslint需要依赖node.js环境,在配置之前需要安装好node.js; 2.npm install eslint --save-dev 或 npm install eslint --save ...
- eslint 入门学习
想学eslint已经很久了,可是每次进到官网看一下就觉得头大,无法下手,但是最近到了年底,进行年度总结,作为一个有志向的程序媛,还是要追求编码规范的,因此今天再次拿起来了eslint,记录一下我的学习 ...
- 工作中遇到的vscode配合eslint完成保存为eslint格式
vscode个人设置 // vscode的个人设置配置 { "workbench.iconTheme": "vscode-icons", "workb ...
- ESLint 使用简介
C 语言诞生之初,程序员编写的代码风格各异,在移植时会出现一些因为不严谨的代码段导致无法被编译器执行的问题.于是在 1979 年,一款叫 lint[1] 的程序被开发出来,能够通过扫描源代码检测潜在的 ...
- ESLint 使用入门 - 来自推酷
在团队协作中,为避免低级 Bug.产出风格统一的代码,会预先制定编码规范.使用 Lint 工具和代码风格检测工具,则可以辅助编码规范执行,有效控制代码质量. 在以前的项目中,我们选择 JSHint 和 ...
- ESLint 使用入门
在团队协作中,为避免低级 Bug.产出风格统一的代码,会预先制定编码规范.使用 Lint 工具和代码风格检测工具,则可以辅助编码规范执行,有效控制代码质量. 在以前的项目中,我们选择 JSHint 和 ...
- Eslint 从入门到放弃
https://blog.csdn.net/walid1992/article/details/54633760
- ESLint的使用笔记
原文地址:https://csspod.com/getting-started-with-eslint/?utm_source=tuicool&utm_medium=referral 在团队协 ...
随机推荐
- QQ信鸽推送
闲来无事,看看腾讯的信鸽推送! 优点: 1.毕竟大腿出的东西,不会太差 2.集成快 3.推送效率高,功能强,APP后台被杀的情况下同样能接受到推送. 废话少说,直接上代码: 源代码.zip
- winform利用委托delegate进行窗体间通信
前段时间学习委托,感觉很模糊的样子,也做过许多实例,但是项目中一直没有用到,今天在项目中遇到一个很简单的例子,现在拿出来,做一个简单的记录. 要求:将弹出框里勾选的内容返回到主面板上. 工具:委托. ...
- Jenkins设置Master/Slave
说明:通过master/slave模式,可以在master节点上统一管理其他slave节点. 下面说明一步步实现master/slave模式. 第一步:以管理员登录jenkins.点击"系统 ...
- Android系统--输入系统(十三)Dispatcher线程情景分析_Reader线程传递事件
Android系统--输入系统(十三)Dispatcher线程情景分析_Reader线程传递事件 1. 输入按键 我们知道Android系统的按键分为三类:(1)Global Key;(2)Syste ...
- Socket异步通信及心跳包同时响应逻辑分析。
有段时间没有更博了,刚好最近在做Socket通信的项目,原理大致内容:[二维码-(加logo)]-->提供主机地址和端口号信息(直接使用[ThoughtWorks.QRCode.dll]比较简单 ...
- Tomcat解压版配置详解(Tomcat8示例)
注:请在JDK安装后操作以下内容 1. 下载Tomcat解压缩安装包 http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.0.45/bin/apac ...
- 集合的定义,操作及运算 (Python)
集合的定义: 集合和列表([ ]) 与 字典 ( { }) 不同,没有特别的特别的语法格式.可以使用set () 创建. 集合同字典一样是无序的.也是不具有重复性的.因此可以把列表变成集合进 ...
- TCP传输协议使用
TCP传输协议,也称之为套接字连接,比较安全,三次握手!,必须确保对方计算机存在,才能连接,而且是长时间连接. 缺点是传输速度有点慢. 你用 socket 去连接 ServiceSocaket 服务器 ...
- NOIP模拟:饼干(简单规律推导)
题目描述 小美有一张很大的网格:2 n * 2 n .每次小美会选一个小矩阵 2 x * 2 x , x > 0,小矩阵不能超过网格的边界.然后把右上一半都放上饼干.下图是当 x=1或2 的时候 ...
- linux执行sh报错:$’\r’: 未找到命令的解决
背景 执行.sh脚本时出现$'\r': 未找到命令, 原因 是因为命令直接从windows 复制过来导致的 解决 yum install dos2unix dos2unix **.sh 进行转换 再次 ...