From 89eacd698225a350d4b8789e1207888f590d69c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sa=C3=BAl=20Ibarra=20Corretg=C3=A9?= Date: Wed, 13 Jun 2018 11:06:22 +0200 Subject: [PATCH] feat(eslint): use new eslint-config-jitsi It contains all the rules we use, minus the react-native specific ones, which we are keeping here. --- package-lock.json | 4 +- package.json | 2 +- react/.eslintrc-react-native.js | 12 +++ react/.eslintrc.js | 150 ++------------------------------ 4 files changed, 21 insertions(+), 147 deletions(-) create mode 100644 react/.eslintrc-react-native.js diff --git a/package-lock.json b/package-lock.json index 200966404..181563a76 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6376,8 +6376,8 @@ } }, "eslint-config-jitsi": { - "version": "github:jitsi/eslint-config-jitsi#64b9f255ae804eb91bd62a3c6fbeb8104944587a", - "from": "github:jitsi/eslint-config-jitsi#v0.1", + "version": "github:jitsi/eslint-config-jitsi#3d193df6476a73f827582e137a67a8612130a455", + "from": "github:jitsi/eslint-config-jitsi#v0.1.0", "dev": true }, "eslint-import-resolver-node": { diff --git a/package.json b/package.json index 76b72cd72..bf00b3d2c 100644 --- a/package.json +++ b/package.json @@ -86,7 +86,7 @@ "clean-css": "3.4.25", "css-loader": "0.28.7", "eslint": "4.12.1", - "eslint-config-jitsi": "github:jitsi/eslint-config-jitsi#v0.1", + "eslint-config-jitsi": "github:jitsi/eslint-config-jitsi#v0.1.0", "eslint-plugin-flowtype": "2.39.1", "eslint-plugin-import": "2.8.0", "eslint-plugin-jsdoc": "3.2.0", diff --git a/react/.eslintrc-react-native.js b/react/.eslintrc-react-native.js new file mode 100644 index 000000000..9e7db876c --- /dev/null +++ b/react/.eslintrc-react-native.js @@ -0,0 +1,12 @@ +module.exports = { + 'plugins': [ + 'react-native' + ], + 'rules': { + 'react-native/no-color-literals': 2, + 'react-native/no-inline-styles': 2, + 'react-native/no-unused-styles': 2, + 'react-native/split-platform-components': 2 + } +}; + diff --git a/react/.eslintrc.js b/react/.eslintrc.js index 8f015f908..1e0005944 100644 --- a/react/.eslintrc.js +++ b/react/.eslintrc.js @@ -1,146 +1,8 @@ module.exports = { - 'extends': '../.eslintrc.js', - 'parserOptions': { - 'ecmaFeatures': { - 'jsx': true - } - }, - 'plugins': [ - 'jsdoc', - 'react', - 'react-native' - ], - 'rules': { - // Possible Errors group - - // Currently, we are using both valid-jsdoc and 'jsdoc' plugin. In the - // future we might stick to one as soon as it has all the features. - 'valid-jsdoc': [ - 'error', - { - 'matchDescription': '.+', - 'prefer': { - 'arg': 'param', - 'argument': 'param', - 'return': 'returns' - }, - 'preferType': { - 'array': 'Array', - 'Boolean': 'boolean', - 'function': 'Function', - 'Number': 'number', - 'object': 'Object', - 'String': 'string' - }, - 'requireParamDescription': true, - 'requireReturn': true, - 'requireReturnDescription': false, - 'requireReturnType': true - } - ], - - // Best Practices group - 'jsx-quotes': [ 'error', 'prefer-single' ], - - // ES6 group rules - - // JsDoc plugin rules group. The following rules are in addition to - // valid-jsdoc rule. - 'jsdoc/check-param-names': 0, - 'jsdoc/check-tag-names': 2, - 'jsdoc/check-types': 0, - 'jsdoc/newline-after-description': 2, - - // XXX Because the following plugin is not very smart about words which - // legitimately begin with uppercase characters mid-sentence, set it to - // warn only. - 'jsdoc/require-description-complete-sentence': 1, - 'jsdoc/require-hyphen-before-param-description': 2, - - // The following 5 rules are covered by valid-jsdoc, so disable them. - 'jsdoc/require-param': 0, - 'jsdoc/require-param-description': 0, - 'jsdoc/require-param-type': 0, - 'jsdoc/require-returns-description': 0, - 'jsdoc/require-returns-type': 0, - - // React plugin rules group - 'react/display-name': 0, - 'react/forbid-prop-types': 0, - 'react/no-danger': 2, - 'react/no-deprecated': 2, - 'react/no-did-mount-set-state': 2, - 'react/no-did-update-set-state': 2, - 'react/no-direct-mutation-state': 2, - 'react/no-find-dom-node': 2, - 'react/no-is-mounted': 2, - 'react/no-multi-comp': 2, - 'react/no-render-return-value': 2, - 'react/no-set-state': 0, - 'react/no-string-refs': 2, - 'react/no-unknown-property': 2, - 'react/prefer-es6-class': 2, - 'react/prefer-stateless-function': 0, - 'react/prop-types': 2, - 'react/react-in-jsx-scope': 2, - 'react/require-extension': 0, - 'react/require-optimization': 0, - 'react/require-render-return': 2, - 'react/self-closing-comp': 2, - 'react/sort-comp': 0, - 'react/sort-prop-types': 2, - - // React plugin JSX-specific rule group - 'react/jsx-boolean-value': [ 'error', 'always' ], - 'react/jsx-closing-bracket-location': [ - 'error', - 'after-props' - ], - 'react/jsx-curly-spacing': [ - 'error', - 'always', - { - 'spacing': { - 'objectLiterals': 'never' - } - } - ], - 'react/jsx-equals-spacing': [ 'error', 'always' ], - 'react/jsx-filename-extension': 0, - 'react/jsx-first-prop-new-line': [ 'error', 'multiline' ], - 'react/jsx-handler-names': [ - 'error', - { - 'eventHandlerPrefix': '_on', - 'eventHandlerPropPrefix': 'on' - } - ], - 'react/jsx-indent': 2, - 'react/jsx-indent-props': 2, - 'react/jsx-key': 2, - 'react/jsx-max-props-per-line': 2, - 'react/jsx-no-bind': 2, - 'react/jsx-no-comment-textnodes': 2, - 'react/jsx-no-duplicate-props': 2, - 'react/jsx-no-literals': 0, - 'react/jsx-no-target-blank': 2, - 'react/jsx-no-undef': 2, - 'react/jsx-pascal-case': 2, - 'react/jsx-sort-props': 2, - 'react/jsx-tag-spacing': [ - 'error', - { - 'beforeSelfClosing': 'always' - } - ], - 'react/jsx-uses-react': 2, - 'react/jsx-uses-vars': 2, - 'react/jsx-wrap-multilines': 2, - - // React Native plugin rules group - 'react-native/no-color-literals': 2, - 'react-native/no-inline-styles': 2, - 'react-native/no-unused-styles': 2, - 'react-native/split-platform-components': 2 - } + 'extends': [ + '../.eslintrc.js', + 'eslint-config-jitsi/jsdoc', + 'eslint-config-jitsi/react', + '.eslintrc-react-native.js' + ] };