eslint-config-amply
Version:
A baseline eslint config for all Amply projects.
82 lines (81 loc) • 2.62 kB
JavaScript
module.exports = {
parser: 'babel-eslint',
env: {
browser: true,
es6: true
},
plugins: ['jsdoc', 'prettier'],
extends: [
'airbnb-base',
require.resolve('./rules/whitespace'),
require.resolve('./rules/prettier'),
require.resolve('./rules/jsdoc'),
require.resolve('./rules/general'),
'prettier',
'plugin:prettier/recommended'
],
settings: {
'import/resolver': {
node: {
extensions: ['.js', '.jsx', '.ts', '.tsx']
}
},
'import/extensions': ['.js', '.mjs', '.jsx', '.ts', '.tsx']
},
rules: {
'class-methods-use-this': 0,
'no-restricted-syntax': [
'error',
{
selector: 'ForInStatement',
message:
'for..in loops iterate over the entire prototype chain, which is virtually never what you want. Use Object.{keys,values,entries}, and iterate over the resulting array.'
},
{
selector: 'LabeledStatement',
message:
'Labels are a form of GOTO; using them makes code confusing and hard to maintain and understand.'
},
{
selector: 'WithStatement',
message:
'`with` is disallowed in strict mode because it makes code impossible to predict and optimize.'
}
],
'prefer-destructuring': [2, { array: false, object: true }],
'import/prefer-default-export': 0,
'import/no-extraneous-dependencies': [
'error',
{
devDependencies: true,
optionalDependencies: true,
peerDependencies: true
}
]
},
overrides: [
{
files: ['*.ts', '*.tsx'],
rules: {
'no-undef': 0,
'no-unused-vars': 0,
'@typescript-eslint/no-unused-vars': 2,
'import/extensions': [
'error',
'ignorePackages',
{
js: 'never',
mjs: 'never',
jsx: 'never',
ts: 'never',
tsx: 'never'
}
],
'jsdoc/require-param-type': 0,
indent: ['error', 4],
'react/jsx-indent': ['error', 4],
'react/jsx-indent-props': ['error', 4]
}
}
]
};