Skip to content

Instantly share code, notes, and snippets.

@arvinxx
Forked from rswanderer/.eslintrc-parameter-instruction.js
Last active May 23, 2022 15:28
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save arvinxx/ded06b2bd53095669445598b7b117dc3 to your computer and use it in GitHub Desktop.
Save arvinxx/ded06b2bd53095669445598b7b117dc3 to your computer and use it in GitHub Desktop.
LIGON - ESLint配置文件.eslintrc.js参数说明
/*
* ESLint的JSON文件是允许JavaScript注释的,但在gist里显示效果不好,所以我把.json文件后缀改为了.js
*/
/*
* ESLint 配置文件优先级:
* .eslintrc.js(输出一个配置对象)
* .eslintrc.yaml
* .eslintrc.yml
* .eslintrc.json(ESLint的JSON文件允许JavaScript风格的注释)
* .eslintrc(可以是JSON也可以是YAML)
* package.json(在package.json里创建一个eslintConfig属性,在那里定义你的配置)
*/
/*
* 你可以通过在项目根目录创建一个.eslintignore文件告诉ESLint去忽略特定的文件和目录
* .eslintignore文件是一个纯文本文件,其中的每一行都是一个glob模式表明哪些路径应该忽略检测
*/
module.exports = {
//ESLint默认使用Espree作为其解析器
//同时babel-eslint也是用得最多的解析器
parser: 'babel-eslint',
/*
extends属性值可以是一个字符串或字符串数组
数组中每个配置项继承它前面的配置
可选的配置项如下:
1.字符串eslint:recommended,该配置项启用一系列核心规则,这些规则报告一些常见问题,即在(规则页面)中打勾的规则
2.一个可以输出配置对象的可共享配置包,如eslint-config-standard
可共享配置包是一个导出配置对象的简单的npm包,包名称以eslint-config-开头,使用前要安装
extends属性值可以省略包名的前缀eslint-config-
3.一个输出配置规则的插件包,如eslint-plugin-react
一些插件也可以输出一个或多个命名的配置
extends属性值为,plugin:包名/配置名称
4.一个指向配置文件的相对路径或绝对路径
5.字符串eslint:all,启用当前安装的ESLint中所有的核心规则
该配置不推荐在产品中使用,因为它随着ESLint版本进行更改。使用的话,请自己承担风险
*/
extends: 'airbnb', //在此使用 airbnb 系列规则
/*
ESLint支持使用第三方插件
在使用插件之前,你必须使用npm安装它
全局安装的ESLint只能使用全局安装的插件
本地安装的ESLint不仅可以使用本地安装的插件还可以使用全局安装的插件
plugin与extend的区别:extend提供的是eslint现有规则的一系列预设
而plugin则提供了除预设之外的自定义规则,当你在eslint的规则里找不到合适的的时候
就可以借用插件来实现了
*/
plugins: ['compat'],// 插件名称可以省略eslint-plugin-前缀
//指定环境,每个环境都有自己预定义的全局变量,可以同时指定多个环境,不矛盾
env: {
browser: true,
node: true,
es6: true, // 此条效果同配置项 ecmaVersion 一样
mocha: true,
jest: true,
jasmine: true,
},
/*
具体规则配置
off或0--关闭规则
warn或1--开启规则,警告级别(不会导致程序退出)
error或2--开启规则,错误级别(当被触发的时候,程序会退出)
*/
rules: {
'react/jsx-filename-extension': [1, { extensions: ['.js'] }], // 取消 jsx 格式限制
'jsx-a11y/anchor-is-valid': [0], // 不用在 Link 中添加 anchor
'react/prop-types': [0], // 暂时不进行 prop-types 验证
'object-curly-newline': [0], // 对象不用新建一行
'import/prefer-default-export': [0], // 不提醒 default export
'import/no-extraneous-dependencies': [0], // 不提醒非 dev 的依赖包
'generator-star-spacing': [0],
'consistent-return': [0],
'react/forbid-prop-types': [0],
'global-require': [1],
'react/jsx-no-bind': [0],
'react/prefer-stateless-function': [0],
'no-else-return': [0],
'no-restricted-syntax': [0],
'no-use-before-define': [0],
'jsx-a11y/no-static-element-interactions': [0],
'jsx-a11y/no-noninteractive-element-interactions': [0],
'jsx-a11y/click-events-have-key-events': [0],
'no-nested-ternary': [0],
'arrow-body-style': [0],
'import/extensions': [0],
'no-bitwise': [0],
'no-cond-assign': [0],
'import/no-unresolved': [0],
'comma-dangle': [
//如果某条规则有额外的选项,你可以使用数组字面量指定它们
//选项可以是字符串,也可以是对象
'error',
{
arrays: 'always-multiline',
objects: 'always-multiline',
imports: 'always-multiline',
exports: 'always-multiline',
functions: 'ignore',
},
],
'function-paren-newline': [0],
'no-restricted-globals': [0],
'require-yield': [1],
//配置插件提供的自定义规则的时候,格式为:不带前缀插件名/规则ID
'compat/compat': 'error',
},
//parser解析代码时的参数
parserOptions: {
//这是个对象,表示你想使用的额外的语言特性,所有选项默认都是false
ecmaFeatures: {
experimentalObjectRestSpread: true, // 启用对实验性的objectRest/spreadProperties的支持
},
},
//ESLint支持在配置文件添加共享设置
//你可以添加settings对象到配置文件,它将提供给每一个将被执行的规则
//如果你想添加的自定义规则而且使它们可以访问到相同的信息,这将会很有用,并且很容易配置
settings: {
polyfills: ['fetch', 'promises'],
},
};
/*
Eslint检测配置文件步骤:
1.在要检测的文件同一目录里寻找.eslintrc.*和package.json
2.紧接着在父级目录里寻找,一直到文件系统的根目录
3.如果在前两步发现有root:true的配置,停止在父级目录中寻找.eslintrc
4.如果以上步骤都没有找到,则回退到用户主目录~/.eslintrc中自定义的默认配置
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment