1 | const isInstalled = require('./isInstalled')
|
2 |
|
3 | const config = {
|
4 | extends: [
|
5 | 'plugin:import/recommended',
|
6 | 'standard',
|
7 | 'prettier',
|
8 | 'prettier/standard'
|
9 | ],
|
10 | plugins: ['import', 'prettier'],
|
11 | settings: {
|
12 | 'import/resolver': {
|
13 | [require.resolve('eslint-import-resolver-babel-module')]: {},
|
14 | [require.resolve('eslint-import-resolver-package-name-import')]: {}
|
15 | }
|
16 | },
|
17 | rules: {
|
18 | 'class-methods-use-this': 'error',
|
19 | 'object-shorthand': 'error',
|
20 | 'no-duplicate-imports': 'off',
|
21 | 'no-var': 'error',
|
22 | 'prefer-const': 'error',
|
23 | 'prefer-arrow-callback': 'error',
|
24 | 'prefer-template': 'error',
|
25 | 'prefer-reflect': 'error',
|
26 | 'prefer-rest-params': 'error',
|
27 | 'prefer-spread': 'error',
|
28 | 'no-param-reassign': 'error',
|
29 |
|
30 | 'import/no-named-as-default': 'off',
|
31 | 'import/unambiguous': 'off',
|
32 |
|
33 | 'node/no-deprecated-api': 'off',
|
34 |
|
35 | 'prettier/prettier': ['error', { semi: false, singleQuote: true }]
|
36 | }
|
37 | }
|
38 |
|
39 | if (isInstalled('flow-bin')) {
|
40 | config.extends.push('plugin:flowtype/recommended', 'prettier/flowtype')
|
41 |
|
42 | config.plugins.push('flowtype')
|
43 |
|
44 | Object.assign(config.rules, {
|
45 | 'flowtype/no-dupe-keys': 'error',
|
46 | 'flowtype/no-primitive-constructor-types': 'error',
|
47 | 'flowtype/no-unused-expressions': 'error',
|
48 | 'flowtype/no-weak-types': 'error',
|
49 | 'flowtype/require-valid-file-annotation': ['error', 'always'],
|
50 |
|
51 | 'import/no-unresolved': 'off',
|
52 | 'import/named': 'off',
|
53 | 'import/namespace': 'off',
|
54 | 'import/default': 'off'
|
55 | })
|
56 | }
|
57 |
|
58 | if (isInstalled('ava')) {
|
59 | config.extends.push('plugin:ava/recommended')
|
60 | config.plugins.push('ava')
|
61 | Object.assign(config.rules, {
|
62 | 'ava/no-ignored-test-files': 'off',
|
63 | 'ava/use-test': 'off'
|
64 | })
|
65 | }
|
66 |
|
67 | if (isInstalled('react')) {
|
68 | config.extends.push(
|
69 | 'plugin:react/recommended',
|
70 | 'standard-jsx',
|
71 | 'prettier/react'
|
72 | )
|
73 |
|
74 | Object.assign(config.rules, {
|
75 | 'class-methods-use-this': 'off',
|
76 | 'jsx-quotes': 'off',
|
77 |
|
78 | 'react/prop-types': 'off',
|
79 |
|
80 | 'react/jsx-handler-names': 'error',
|
81 | 'react/jsx-pascal-case': 'error',
|
82 | 'react/no-array-index-key': 'error',
|
83 | 'react/no-did-mount-set-state': 'error',
|
84 | 'react/no-did-update-set-state': 'error',
|
85 | 'react/no-redundant-should-component-update': 'error',
|
86 | 'react/no-typos': 'error',
|
87 | 'react/no-will-update-set-state': 'error',
|
88 | 'react/sort-comp': 'error',
|
89 | 'react/style-prop-object': 'error',
|
90 | 'react/void-dom-elements-no-children': 'error'
|
91 | })
|
92 | }
|
93 |
|
94 | module.exports = config
|