186 lines
6.0 KiB
JavaScript
186 lines
6.0 KiB
JavaScript
|
module.exports = {
|
||
|
env: {
|
||
|
es6: true
|
||
|
},
|
||
|
parserOptions: {
|
||
|
ecmaVersion: 6,
|
||
|
sourceType: 'module',
|
||
|
ecmaFeatures: {
|
||
|
generators: false,
|
||
|
objectLiteralDuplicateProperties: false
|
||
|
}
|
||
|
},
|
||
|
|
||
|
rules: {
|
||
|
// enforces no braces where they can be omitted
|
||
|
// https://eslint.org/docs/rules/arrow-body-style
|
||
|
// TODO: enable requireReturnForObjectLiteral?
|
||
|
'arrow-body-style': ['error', 'as-needed', {
|
||
|
requireReturnForObjectLiteral: false,
|
||
|
}],
|
||
|
|
||
|
// require parens in arrow function arguments
|
||
|
// https://eslint.org/docs/rules/arrow-parens
|
||
|
'arrow-parens': ['error', 'always'],
|
||
|
|
||
|
// require space before/after arrow function's arrow
|
||
|
// https://eslint.org/docs/rules/arrow-spacing
|
||
|
'arrow-spacing': ['error', { before: true, after: true }],
|
||
|
|
||
|
// verify super() callings in constructors
|
||
|
'constructor-super': 'error',
|
||
|
|
||
|
// enforce the spacing around the * in generator functions
|
||
|
// https://eslint.org/docs/rules/generator-star-spacing
|
||
|
'generator-star-spacing': ['error', { before: false, after: true }],
|
||
|
|
||
|
// disallow modifying variables of class declarations
|
||
|
// https://eslint.org/docs/rules/no-class-assign
|
||
|
'no-class-assign': 'error',
|
||
|
|
||
|
// disallow arrow functions where they could be confused with comparisons
|
||
|
// https://eslint.org/docs/rules/no-confusing-arrow
|
||
|
'no-confusing-arrow': ['error', {
|
||
|
allowParens: true,
|
||
|
}],
|
||
|
|
||
|
// disallow modifying variables that are declared using const
|
||
|
'no-const-assign': 'error',
|
||
|
|
||
|
// disallow duplicate class members
|
||
|
// https://eslint.org/docs/rules/no-dupe-class-members
|
||
|
'no-dupe-class-members': 'error',
|
||
|
|
||
|
// disallow importing from the same path more than once
|
||
|
// https://eslint.org/docs/rules/no-duplicate-imports
|
||
|
// replaced by https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-duplicates.md
|
||
|
'no-duplicate-imports': 'off',
|
||
|
|
||
|
// disallow symbol constructor
|
||
|
// https://eslint.org/docs/rules/no-new-symbol
|
||
|
'no-new-symbol': 'error',
|
||
|
|
||
|
// Disallow specified names in exports
|
||
|
// https://eslint.org/docs/rules/no-restricted-exports
|
||
|
'no-restricted-exports': ['error', {
|
||
|
restrictedNamedExports: [
|
||
|
'default', // use `export default` to provide a default export
|
||
|
'then', // this will cause tons of confusion when your module is dynamically `import()`ed, and will break in most node ESM versions
|
||
|
],
|
||
|
}],
|
||
|
|
||
|
// disallow specific imports
|
||
|
// https://eslint.org/docs/rules/no-restricted-imports
|
||
|
'no-restricted-imports': ['off', {
|
||
|
paths: [],
|
||
|
patterns: []
|
||
|
}],
|
||
|
|
||
|
// disallow to use this/super before super() calling in constructors.
|
||
|
// https://eslint.org/docs/rules/no-this-before-super
|
||
|
'no-this-before-super': 'error',
|
||
|
|
||
|
// disallow useless computed property keys
|
||
|
// https://eslint.org/docs/rules/no-useless-computed-key
|
||
|
'no-useless-computed-key': 'error',
|
||
|
|
||
|
// disallow unnecessary constructor
|
||
|
// https://eslint.org/docs/rules/no-useless-constructor
|
||
|
'no-useless-constructor': 'error',
|
||
|
|
||
|
// disallow renaming import, export, and destructured assignments to the same name
|
||
|
// https://eslint.org/docs/rules/no-useless-rename
|
||
|
'no-useless-rename': ['error', {
|
||
|
ignoreDestructuring: false,
|
||
|
ignoreImport: false,
|
||
|
ignoreExport: false,
|
||
|
}],
|
||
|
|
||
|
// require let or const instead of var
|
||
|
'no-var': 'error',
|
||
|
|
||
|
// require method and property shorthand syntax for object literals
|
||
|
// https://eslint.org/docs/rules/object-shorthand
|
||
|
'object-shorthand': ['error', 'always', {
|
||
|
ignoreConstructors: false,
|
||
|
avoidQuotes: true,
|
||
|
}],
|
||
|
|
||
|
// suggest using arrow functions as callbacks
|
||
|
'prefer-arrow-callback': ['error', {
|
||
|
allowNamedFunctions: false,
|
||
|
allowUnboundThis: true,
|
||
|
}],
|
||
|
|
||
|
// suggest using of const declaration for variables that are never modified after declared
|
||
|
'prefer-const': ['error', {
|
||
|
destructuring: 'any',
|
||
|
ignoreReadBeforeAssign: true,
|
||
|
}],
|
||
|
|
||
|
// Prefer destructuring from arrays and objects
|
||
|
// https://eslint.org/docs/rules/prefer-destructuring
|
||
|
'prefer-destructuring': ['error', {
|
||
|
VariableDeclarator: {
|
||
|
array: false,
|
||
|
object: true,
|
||
|
},
|
||
|
AssignmentExpression: {
|
||
|
array: true,
|
||
|
object: false,
|
||
|
},
|
||
|
}, {
|
||
|
enforceForRenamedProperties: false,
|
||
|
}],
|
||
|
|
||
|
// disallow parseInt() in favor of binary, octal, and hexadecimal literals
|
||
|
// https://eslint.org/docs/rules/prefer-numeric-literals
|
||
|
'prefer-numeric-literals': 'error',
|
||
|
|
||
|
// suggest using Reflect methods where applicable
|
||
|
// https://eslint.org/docs/rules/prefer-reflect
|
||
|
'prefer-reflect': 'off',
|
||
|
|
||
|
// use rest parameters instead of arguments
|
||
|
// https://eslint.org/docs/rules/prefer-rest-params
|
||
|
'prefer-rest-params': 'error',
|
||
|
|
||
|
// suggest using the spread syntax instead of .apply()
|
||
|
// https://eslint.org/docs/rules/prefer-spread
|
||
|
'prefer-spread': 'error',
|
||
|
|
||
|
// suggest using template literals instead of string concatenation
|
||
|
// https://eslint.org/docs/rules/prefer-template
|
||
|
'prefer-template': 'error',
|
||
|
|
||
|
// disallow generator functions that do not have yield
|
||
|
// https://eslint.org/docs/rules/require-yield
|
||
|
'require-yield': 'error',
|
||
|
|
||
|
// enforce spacing between object rest-spread
|
||
|
// https://eslint.org/docs/rules/rest-spread-spacing
|
||
|
'rest-spread-spacing': ['error', 'never'],
|
||
|
|
||
|
// import sorting
|
||
|
// https://eslint.org/docs/rules/sort-imports
|
||
|
'sort-imports': ['off', {
|
||
|
ignoreCase: false,
|
||
|
ignoreDeclarationSort: false,
|
||
|
ignoreMemberSort: false,
|
||
|
memberSyntaxSortOrder: ['none', 'all', 'multiple', 'single'],
|
||
|
}],
|
||
|
|
||
|
// require a Symbol description
|
||
|
// https://eslint.org/docs/rules/symbol-description
|
||
|
'symbol-description': 'error',
|
||
|
|
||
|
// enforce usage of spacing in template strings
|
||
|
// https://eslint.org/docs/rules/template-curly-spacing
|
||
|
'template-curly-spacing': 'error',
|
||
|
|
||
|
// enforce spacing around the * in yield* expressions
|
||
|
// https://eslint.org/docs/rules/yield-star-spacing
|
||
|
'yield-star-spacing': ['error', 'after']
|
||
|
}
|
||
|
};
|