UNPKG

2.48 kBJavaScriptView Raw
1const isInstalled = require('./isInstalled')
2
3const 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
39if (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
58if (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
67if (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
94module.exports = config