From 3032b19ac3477776a451e0c0ab6ca28a6e6d1aff Mon Sep 17 00:00:00 2001 From: Johannes Ewald Date: Sun, 26 Aug 2018 19:04:30 +0200 Subject: [PATCH] fix: Add eslint-plugin-babel (#33) Closes https://github.com/peerigon/eslint-config-peerigon/issues/26 --- base.js | 34 +++++++++++++++++++++++++++------- package-lock.json | 13 +++++++++++++ package.json | 1 + 3 files changed, 41 insertions(+), 7 deletions(-) diff --git a/base.js b/base.js index 26cceab..a352859 100644 --- a/base.js +++ b/base.js @@ -17,7 +17,8 @@ module.exports = { "import", "optimize-regex", "array-func", - "promise" + "promise", + "babel" ], extends: [ "eslint:recommended", @@ -51,6 +52,19 @@ module.exports = { before: true, }, ], // http://eslint.org/docs/rules/arrow-spacing + // https://github.com/babel/eslint-plugin-babel + "babel/new-cap": "error", + "babel/no-invalid-this": "error", + "babel/no-unused-expressions": [ + "error", + { + allowShortCircuit: true, + allowTernary: true, + }, + ], + "babel/object-curly-spacing": ["error", "never"], + "babel/quotes": ["error", "double", "avoid-escape"], + "babel/semi": "error", "block-scoped-var": "error", // http://eslint.org/docs/rules/block-scoped-var "block-spacing": "error", // http://eslint.org/docs/rules/block-spacing "brace-style": [ @@ -299,7 +313,8 @@ module.exports = { "max-statements": "off", // http://eslint.org/docs/rules/max-statements "max-statements-per-line": ["error", {max: 1}], // http://eslint.org/docs/rules/max-statements-per-line "multiline-ternary": ["error", "always-multiline"], // http://eslint.org/docs/rules/multiline-ternary - "new-cap": "error", // http://eslint.org/docs/rules/new-cap + // Handled by babel/new-cap + "new-cap": "off", // http://eslint.org/docs/rules/new-cap "new-parens": "error", // http://eslint.org/docs/rules/new-parens "newline-per-chained-call": "error", // http://eslint.org/docs/rules/newline-per-chained-call "no-alert": "warn", // http://eslint.org/docs/rules/no-alert @@ -351,7 +366,8 @@ module.exports = { "no-inline-comments": "off", // http://eslint.org/docs/rules/no-inline-comments "no-inner-declarations": ["error", "functions"], // http://eslint.org/docs/rules/no-inner-declarations "no-invalid-regexp": "error", // http://eslint.org/docs/rules/no-invalid-regexp - "no-invalid-this": "error", // http://eslint.org/docs/rules/no-invalid-this + // Handled by babel/no-invalid-this + "no-invalid-this": "off", // http://eslint.org/docs/rules/no-invalid-this "no-irregular-whitespace": "error", // http://eslint.org/docs/rules/no-irregular-whitespace "no-iterator": "error", // http://eslint.org/docs/rules/no-iterator "no-label-var": "error", // http://eslint.org/docs/rules/no-label-var @@ -448,8 +464,9 @@ module.exports = { "no-unreachable": "error", // http://eslint.org/docs/rules/no-unreachable "no-unsafe-finally": "error", // http://eslint.org/docs/rules/no-unsafe-finally "no-unsafe-negation": "error", // http://eslint.org/docs/rules/no-unsafe-negation + // Handled by babel/no-unusd-expressions "no-unused-expressions": [ - "error", + "off", { allowShortCircuit: true, allowTernary: true, @@ -491,7 +508,8 @@ module.exports = { multiline: true, }, ], // http://eslint.org/docs/rules/object-curly-newline - "object-curly-spacing": ["error", "never"], // http://eslint.org/docs/rules/object-curly-spacing + // Handled by babel/object-curly-spacing + "object-curly-spacing": ["off", "never"], // http://eslint.org/docs/rules/object-curly-spacing "object-property-newline": [ "error", { @@ -581,13 +599,15 @@ module.exports = { "promise/prefer-await-to-then": "error", // https://github.com/xjamundx/eslint-plugin-promise/blob/master/docs/rules/prefer-await-to-then.md "promise/valid-params": "error", // https://github.com/xjamundx/eslint-plugin-promise/blob/master/docs/rules/valid-params.md "quote-props": ["error", "as-needed"], // http://eslint.org/docs/rules/quote-props - "quotes": ["error", "double", "avoid-escape"], // http://eslint.org/docs/rules/quotes + // Handled by babel/quotes + "quotes": ["off", "double", "avoid-escape"], // http://eslint.org/docs/rules/quotes "radix": "off", // http://eslint.org/docs/rules/radix "require-await": "off", // http://eslint.org/docs/rules/require-await "require-jsdoc": "off", // http://eslint.org/docs/rules/require-jsdoc "require-yield": "error", // http://eslint.org/docs/rules/require-yield "rest-spread-spacing": ["error", "never"], // http://eslint.org/docs/rules/rest-spread-spacing - "semi": "error", // http://eslint.org/docs/rules/semi + // Handled by babel/semi + "semi": "off", // http://eslint.org/docs/rules/semi "semi-spacing": [ "error", { diff --git a/package-lock.json b/package-lock.json index ed912ea..85eb78f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1267,6 +1267,14 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-array-func/-/eslint-plugin-array-func-3.0.0.tgz", "integrity": "sha512-aUZ9wQiPl31ewbHxTN38rgaVOfQwg7Pyauq+5LWcTO4QQwvHZnCh2TPZFsaXhnBg3XmLT/AZogRThV/flz7ulQ==" }, + "eslint-plugin-babel": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-babel/-/eslint-plugin-babel-5.1.0.tgz", + "integrity": "sha512-HBkv9Q0LU/IhNUauC8TrbhcN79Yq/+xh2bYTOcv6KMaV2tsvVphkHwDTJ9r3C6mJUnmxrtzT3DQfrWj0rOISqQ==", + "requires": { + "eslint-rule-composer": "^0.3.0" + } + }, "eslint-plugin-flowtype": { "version": "2.50.0", "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.50.0.tgz", @@ -1393,6 +1401,11 @@ "safe-regex": "^1.1.0" } }, + "eslint-rule-composer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz", + "integrity": "sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==" + }, "eslint-rule-documentation": { "version": "1.0.21", "resolved": "https://registry.npmjs.org/eslint-rule-documentation/-/eslint-rule-documentation-1.0.21.tgz", diff --git a/package.json b/package.json index 071f71f..7fdda11 100644 --- a/package.json +++ b/package.json @@ -30,6 +30,7 @@ "dependencies": { "babel-eslint": "^8.2.6", "eslint-plugin-array-func": "^3.0.0", + "eslint-plugin-babel": "^5.1.0", "eslint-plugin-import": "^2.14.0", "eslint-plugin-jsdoc": "^3.8.0", "eslint-plugin-optimize-regex": "^1.1.5",