module.exports = {
extends: ['airbnb', 'airbnb/hooks'],
parser: '@babel/eslint-parser',
parserOptions: {
ecmaVersion: 7,
sourceType: 'module',
},
env: {
browser: true,
},
plugins: [
'import'
],
settings: {
'import/ignore': ['\\.(?:styl|less|css|scss|vue|json)$'],
'import/parsers': {
'@typescript-eslint/parser': [
'.ts',
'.tsx'
]
},
'import/docstyle': [
'jsdoc',
'tomdoc'
],
'import/resolver': {
node: {
extensions: [
'.js',
'.jsx',
'.ts',
'.tsx',
'.vue'
]
}
}
},
rules: {
'import/extensions': [
2,
{
js: 'never',
jsx: 'never',
es: 'never',
ts: 'never',
tsx: 'never',
vue: 'ignore',
jpg: 'always',
jpeg: 'always',
png: 'always',
svg: 'always',
gif: 'always',
webp: 'always',
ttf: 'always',
woff: 'always',
woff2: 'always',
otf: 'always',
xml: 'always'
}
],
'no-unused-vars': [
1,
{
vars: 'local',
args: 'none'
}
],
'max-len': [
2,
120,
4,
{
code: 120,
tabWidth: 2,
ignoreUrls: true,
ignoreComments: true,
ignoreRegExpLiterals: true
}
],
'no-unused-expressions': [
1,
{
allowShortCircuit: true,
allowTernary: true,
allowTaggedTemplates: true
}
],
'comma-dangle': [
1,
'only-multiline'
],
'import/no-unresolved': [
1,
{
amd: true,
commonjs: true,
caseSensitive: true,
ignore: ['^[@~]']
}
],
'object-curly-spacing': [
2,
'never'
],
'object-curly-newline': [
2,
{
multiline: true,
consistent: true
}
],
'arrow-parens': [
2,
'as-needed'
],
'operator-linebreak': [
2,
'before'
],
'prefer-object-spread': 1,
'react/jsx-filename-extension': [2, {extensions: ['.js', '.jsx']}],
'react/jsx-props-no-spreading': [0],
'react/prop-types': 1,
'react/destructuring-assignment': [
1,
'always',
{
ignoreClassFields: true
}
],
'react-hooks/exhaustive-deps': [1],
'no-param-reassign': [1],
'jsx-a11y/click-events-have-key-events': [0],
'jsx-a11y/no-static-element-interactions': [0],
}
};