From a25122c8dd72b0762baecaec20c8d4e1af84d0da Mon Sep 17 00:00:00 2001 From: Joshua Coady Date: Fri, 17 Jun 2022 11:24:28 -0700 Subject: [PATCH] feat(eslint-config): add node and jest support --- packages/eslint-config/browser.js | 29 +++++++++++ packages/eslint-config/index.js | 84 ++++++++++++------------------- packages/eslint-config/jest.js | 12 +++++ packages/eslint-config/node.js | 14 ++++++ packages/eslint-config/vue.js | 2 +- 5 files changed, 89 insertions(+), 52 deletions(-) create mode 100644 packages/eslint-config/browser.js create mode 100644 packages/eslint-config/jest.js create mode 100644 packages/eslint-config/node.js diff --git a/packages/eslint-config/browser.js b/packages/eslint-config/browser.js new file mode 100644 index 0000000..dad3673 --- /dev/null +++ b/packages/eslint-config/browser.js @@ -0,0 +1,29 @@ +module.exports = { + extends: [ + './index.js', + ], + parser: 'babel-eslint', + env: { + browser: true, + }, + rules: { + 'no-console': ['error', { allow: ['warn', 'error'] }], + + // common ones + // biblio + semi: ['error', 'never'], + quotes: [ + 'error', + 'single', + { avoidEscape: true, allowTemplateLiterals: true }, + ], + + // wf + 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off', + + // ydr + + // bib-service-projects + 'require-atomic-updates': 'warn', + }, +} diff --git a/packages/eslint-config/index.js b/packages/eslint-config/index.js index b312a75..2fc0622 100644 --- a/packages/eslint-config/index.js +++ b/packages/eslint-config/index.js @@ -1,56 +1,38 @@ const prettierConfig = require('@lovetoknow/prettier-config') module.exports = { - extends: ['eslint:recommended', 'plugin:prettier/recommended'], - parser: 'babel-eslint', - parserOptions: { - ecmaVersion: 2018, - }, - env: { - es6: true, - }, - rules: { - 'no-console': ['error', { allow: ['warn', 'error'] }], - - // Best Practices - curly: 'error', - eqeqeq: 'error', - - // Stylistic (although Prettier will handle most of it) - 'brace-style': ['error', '1tbs', { allowSingleLine: true }], - 'one-var': ['error', 'never'], - 'linebreak-style': ['error', 'unix'], - - // ES6 - 'no-duplicate-imports': 'error', - 'no-useless-constructor': 'error', - 'prefer-template': 'error', - - // common ones - // biblio - semi: ['error', 'never'], - quotes: [ - 'error', - 'single', - { avoidEscape: true, allowTemplateLiterals: true }, - ], - - // wf - 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off', - - // ydr - - // bib-service-projects - 'require-atomic-updates': 'warn', - - // ... more? - - // Prettier config - 'prettier/prettier': [ - 'error', - { - ...prettierConfig, - }, + extends: [ + 'eslint:recommended', + 'plugin:prettier/recommended', + './jest.js', ], - }, + env: { + es6: true, + }, + parserOptions: { + ecmaVersion: 2018, + }, + rules: { + // Best Practices + curly: 'error', + eqeqeq: 'error', + + // Stylistic (although Prettier will handle most of it) + 'brace-style': ['error', '1tbs', { allowSingleLine: true }], + 'one-var': ['error', 'never'], + 'linebreak-style': ['error', 'unix'], + + // ES6 + 'no-duplicate-imports': 'error', + 'no-useless-constructor': 'error', + 'prefer-template': 'error', + + // Prettier config + 'prettier/prettier': [ + 'error', + { + ...prettierConfig, + }, + ], + }, } diff --git a/packages/eslint-config/jest.js b/packages/eslint-config/jest.js new file mode 100644 index 0000000..f0df7bf --- /dev/null +++ b/packages/eslint-config/jest.js @@ -0,0 +1,12 @@ +module.exports = { + overrides: [ + { + files: ['*.spec.js', '*.test.js'], + env: { + jest: true, + }, + extends: ['plugin:jest/recommended'], + plugins: ['jest'], + }, + ], +} diff --git a/packages/eslint-config/node.js b/packages/eslint-config/node.js new file mode 100644 index 0000000..9615c47 --- /dev/null +++ b/packages/eslint-config/node.js @@ -0,0 +1,14 @@ +module.exports = { + extends: [ + './index.js', + 'plugin:node/recommended', + ], + plugins: ['node'], + env: { + node: true, + es2022: true, + }, + parserOptions: { + ecmaVersion: 2022, + }, +} diff --git a/packages/eslint-config/vue.js b/packages/eslint-config/vue.js index 2d6f9d7..2350281 100644 --- a/packages/eslint-config/vue.js +++ b/packages/eslint-config/vue.js @@ -10,7 +10,7 @@ const a11yAsWarning = Object.keys(vueA11y.rules).reduce( module.exports = { extends: [ 'plugin:vue/essential', - './index.js', + './browser.js', 'plugin:vuejs-accessibility/recommended', ], plugins: ['vuejs-accessibility'],