@rajzik/config-eslint
Version:
Reusable ESLint config.
108 lines (107 loc) • 3.81 kB
JavaScript
;
const core_1 = require("@beemo/core");
const lumos_common_1 = require("@rajzik/lumos-common");
const config = {
root: true,
parser: 'babel-eslint',
parserOptions: {
requireConfigFile: false,
},
extends: ['airbnb', 'plugin:jsx-a11y/recommended'],
plugins: ['import', 'react', 'react-hooks'],
globals: {
__DEV__: 'readonly',
// Metrics and analytics providers
ga: 'readonly',
newrelic: 'readonly',
// Mostly for easier compatibility between browsers, workers, etc
global: 'readonly',
// Mostly references to `process.env.NODE_ENV`
process: 'readonly',
// references for globalThis
globalThis: 'readonly',
// Webpack variables
__webpack_public_path__: 'writeable',
__webpack_require__: 'readonly',
__webpack_chunk_load__: 'readonly',
__webpack_modules__: 'readonly',
__webpack_hash__: 'readonly',
__non_webpack_require__: 'readonly',
__webpack_exports_info__: 'readonly',
DEBUG: 'readonly',
},
env: {
browser: true,
node: false,
},
reportUnusedDisableDirectives: true,
settings: {
propWrapperFunctions: ['forbidExtraProps', 'exact', 'Object.freeze'],
'import/ignore': [
'node_modules',
'\\.json$',
lumos_common_1.ASSET_EXT_PATTERN.source,
lumos_common_1.CSS_EXT_PATTERN.source,
lumos_common_1.GQL_EXT_PATTERN.source,
],
'import/extensions': lumos_common_1.EXTS,
'import/resolver': {
node: {
extensions: lumos_common_1.EXTS,
},
[core_1.Path.resolve('../resolvers/graphql.js', __dirname).path()]: {
extensions: ['.gql', '.graphql'],
},
},
},
rules: {
'react-hooks/exhaustive-deps': 'error',
'react-hooks/rules-of-hooks': 'error',
},
overrides: [
{
files: [`*.test.${lumos_common_1.EXTS_GROUP}`],
plugins: ['jest'],
globals: {
jsdom: 'readonly',
},
env: {
jest: true,
node: true,
},
rules: {
'max-classes-per-file': 'off',
'no-magic-numbers': 'off',
'sort-keys': 'off',
// JEST
'jest/expect-expect': 'error',
'jest/no-alias-methods': 'error',
'jest/no-disabled-tests': 'error',
'jest/no-duplicate-hooks': 'error',
'jest/no-expect-resolves': 'error',
'jest/no-export': 'error',
'jest/no-focused-tests': 'error',
'jest/no-identical-title': 'error',
'jest/no-if': 'error',
'jest/no-jasmine-globals': 'error',
'jest/no-jest-import': 'error',
'jest/no-standalone-expect': 'error',
'jest/no-test-prefixes': 'error',
'jest/no-test-return-statement': 'error',
'jest/prefer-hooks-on-top': 'error',
'jest/prefer-spy-on': 'error',
'jest/prefer-todo': 'error',
'jest/prefer-to-be-null': 'error',
'jest/prefer-to-be-undefined': 'error',
'jest/prefer-to-contain': 'error',
'jest/prefer-to-have-length': 'error',
'jest/require-to-throw-message': 'error',
'jest/require-top-level-describe': 'error',
'jest/valid-describe': 'error',
'jest/valid-expect': 'error',
'jest/valid-title': 'error',
},
},
],
};
module.exports = config;