1、初始命令
eslint初始命令如下:
(1) eslint --init: 生成.eslintrc.js文件
(2) eslint src --fix: 自动修复错误。但是只能修复基础的不影响代码逻辑的错误。其他像no-unused-vars这种错误只能手动修改
2、常用属性
eslint的常用属性: env、extends、parserOptions、plugins、rules等。
parserOptions
EsLint通过parserOptions,允许指定校验的ecma的版本,及ecma的一些特性
"parserOptions": {
"ecmaVersion": 6,
"sourceType": "module",
"ecmaFeatures": {
"jsx": true
}
},
parser
指定解析器
EsLint默认使用esprima做脚本解析,在使用es6代码中,需要改成babel-eslint。
babel-eslint 解析器是一种使用频率很高的解析器,因为现在很多公司的很多项目目前都使用了es6,为了兼容性考虑基本都使用babel插件对代码进行编译。而用babel编译后的代码使用 babel-eslint 这款解析器可以避免不必要的麻烦。
babel-eslint 安装命令:
npm install --save-dev babel-eslint
在 .eslintrc.js 配置文件中添加如下配置项代码:
parser: 'babel-eslint',
env
Environment可以预设好的其他环境的全局变量,如brower、node环境变量、es6环境变量、mocha环境变量等
"env": {
"browser": true,
"node": true
}
如果想使用插件中的环境变量,你可以使用plugins指定:
{
"plugins": ["example"],
"env": {
"example/custom": true
}
}
plugins
用来引用第三方插件
"plugins": [
"plugin1",
"eslint-plugin-plugin2"
]
rules:
设置具体的配置。第一个是错误级别:
"off" or 0 - 关闭规则
"warn" or 1 - 将规则视为一个警告(不会影响退出码)
"error" or 2 - 将规则视为一个错误 (退出码为1)
{
"rules": {
"semi": ["error", "always"],
"quotes": ["error", "double"]
}
}
extends
可以从基础配置中继承已启用的规则。eslint官方提供了3种预安装包:
(1)eslint-config-google
npm install eslint eslint-config-google
(2)eslint-config-airbnb
Airbnb标准,它依赖eslint, eslint-plugin-import, eslint-plugin-react, and eslint-plugin-jsx-a11y等插件。
执行以下命令查看所依赖的各个版本:
npm info "eslint-config-airbnb@latest" peerDependencies
知道依赖后,安装依赖包。
eslint-config-airbnb-base 包含了针对 ES6+ 代码的检查
eslint-config-airbnb 在 eslint-config-airbnb-base 的基础上增加了对 react 和 jsx 语法的检查。
(3)eslint-config-standard
"extends": "standard",
global
指定全局变量。true代表允许重写、false代表不允许重写
"globals": {
"var1": true,
"var2": false
}
3、代码间的使用
eslint的注释
可以在代码间加注释,设置是否启用eslint
var a = 1; //eslint-disable-line 设置该行不启用
//eslint-disable-next-line 设置下行不启用
var a = 1
/* eslint-disable */
...
/* eslint-enable */
设置代码段不启用
4、发布自己的配置
eslint允许发布自己设定的配置。被引用进来即可使用。
(1)my-config.js
module.exports = {
extends: 'eslint:recommended',
env: {
node: true,
es6: true
},
rules: {
'no-console': 'off',
'indent': [ 'error', 4 ],
'quotes': [ 'error', 'single' ]
}
};
(2) package.json
{
"name": "eslint-config-my",
"version": "0.0.1",
"main":"my-config.js"
}
为了能让 eslint 正确载入这个模块,我们需要执行 npm link 将这个模块链接到本地全局位置:
npm link eslint-config-my
然后将文件 .eslintrc.js 改成:
module.exports = {
extends: 'my', //在 extends 中, eslint-config-my 可简写为 my
};
代码说明
module.exports = {
// 默认情况下,ESLint会在所有父级组件中寻找配置文件,一直到根目录。ESLint一旦发现配置文件中有 "root": true,它就会停止在父级目录中寻找。
root: true,
// 对Babel解析器的包装使其与 ESLint 兼容。
parser: 'babel-eslint',
parserOptions: {
// 代码是 ECMAScript 模块
sourceType: 'module'
},
env: {
// 预定义的全局变量,这里是浏览器环境
browser: true,
},
// 扩展一个流行的风格指南,即 eslint-config-standard
// https://github.com/feross/standard/blob/master/RULES.md#javascript-standard-style
extends: 'standard',
// required to lint *.vue files
plugins: [
// 此插件用来识别.html 和 .vue文件中的js代码
'html',
// standard风格的依赖包
"standard",
// standard风格的依赖包
"promise"
],
// add your custom rules here
'rules': {
// allow paren-less arrow functions
'arrow-parens': 0,
// allow async-await
'generator-star-spacing': 0,
// allow debugger during development
'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0
}
}
常用插件
1、eslint-friendly-formatter 可以让eslint的错误信息出现在终端上
通过webpack配置使用如下:
{
test: /\.(js|vue)$/,
loader: 'eslint-loader',
enforce: 'pre',
include: [resolve('src'), resolve('test')],
options: {
formatter: require('eslint-friendly-formatter')
}
},
2、eslint-plugin-html
这个插件将会提醒模块脚本之间模拟浏览器共享全局变量的行为,因为这不适用于模块脚本。
这个插件也可以扩展文件,如:.vue,.jsx
.eslintrc.js中,添加如下配置项:
settings: {
'html/html-extensions': ['.html', '.vue'],
'html/indent': '+2',
},
而对于这种用 eslint-pulgin-html 扩展的的文件我们可以使用 eslint --ext .html,.vue src 进行检测,如果想要在开发中边写边检测,我们可以使用相应文件的loader进行处理。然后执行 npm run dev 就可以实现的功能。边写边检测的功能。