packages/eslint-config/es6/index.js
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 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',
// // 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: false,
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 operator 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,
// 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', 'always'],
// // enforce spacing around the * in yield* expressions
// // https://eslint.org/docs/rules/yield-star-spacing
// 'yield-star-spacing': ['error', 'after']
},
};