107 lines
2.7 KiB
JavaScript
107 lines
2.7 KiB
JavaScript
module.exports = {
|
|
root: true,
|
|
env: {
|
|
browser: true,
|
|
commonjs: true,
|
|
es6: true
|
|
},
|
|
extends: ['eslint:recommended', 'plugin:react/recommended'],
|
|
parser: '@babel/eslint-parser',
|
|
parserOptions: {
|
|
requireConfigFile: false,
|
|
babelOptions: {
|
|
presets: ['@babel/preset-react']
|
|
},
|
|
ecmaFeatures: {
|
|
jsx: true,
|
|
modules: true,
|
|
experimentalObjectRestSpread: true
|
|
},
|
|
ecmaVersion: 2020,
|
|
sourceType: 'module'
|
|
},
|
|
// plugins: ['react'],
|
|
rules: {
|
|
// general
|
|
indent: ['warn', 2, { SwitchCase: 1, ignoredNodes: ['TemplateLiteral'] }],
|
|
'linebreak-style': ['error', 'unix'],
|
|
quotes: ['warn', 'single'],
|
|
semi: ['warn', 'always'],
|
|
'no-unused-vars': 'warn',
|
|
'comma-dangle': [
|
|
'warn',
|
|
{
|
|
arrays: 'never',
|
|
objects: 'never',
|
|
imports: 'never',
|
|
exports: 'never',
|
|
functions: 'ignore'
|
|
}
|
|
],
|
|
'object-curly-spacing': 'off',
|
|
'eol-last': ['warn', 'always'],
|
|
'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'warn',
|
|
complexity: ['error', { max: 20 }],
|
|
eqeqeq: ['warn', 'always'],
|
|
// react
|
|
'react/no-unescaped-entities': ['error', { forbid: ['>', '"', '}'] }],
|
|
'react/prop-types': [2, { ignore: ['action', 'dispatch', 'nav', 'navigation'] }],
|
|
'react/jsx-boolean-value': 2,
|
|
'react/jsx-no-undef': 2,
|
|
'react/react-in-jsx-scope': 'off',
|
|
// allow jsx syntax in js files (for next.js project)
|
|
'react/jsx-filename-extension': [1, { extensions: ['.js', '.jsx'] }], //should add ".ts" if typescript project
|
|
'react/jsx-sort-props': [
|
|
2,
|
|
{
|
|
callbacksLast: true,
|
|
shorthandFirst: true,
|
|
ignoreCase: true,
|
|
noSortAlphabetically: true
|
|
}
|
|
],
|
|
'react/jsx-pascal-case': 2,
|
|
'react/display-name': [0, { ignoreTranspilerName: false }]
|
|
},
|
|
// Map from global var to bool specifying if it can be redefined
|
|
globals: {
|
|
__DEV__: true,
|
|
__dirname: false,
|
|
__fbBatchedBridgeConfig: false,
|
|
alert: false,
|
|
cancelAnimationFrame: false,
|
|
cancelIdleCallback: false,
|
|
clearImmediate: true,
|
|
clearInterval: false,
|
|
clearTimeout: false,
|
|
console: false,
|
|
document: false,
|
|
escape: false,
|
|
Event: false,
|
|
EventTarget: false,
|
|
exports: false,
|
|
fetch: false,
|
|
FormData: false,
|
|
global: false,
|
|
Map: true,
|
|
module: false,
|
|
navigator: false,
|
|
process: false,
|
|
Promise: true,
|
|
requestAnimationFrame: true,
|
|
requestIdleCallback: true,
|
|
require: false,
|
|
Set: true,
|
|
setImmediate: true,
|
|
setInterval: false,
|
|
setTimeout: false,
|
|
window: false,
|
|
XMLHttpRequest: false
|
|
},
|
|
settings: {
|
|
react: {
|
|
version: require('./package.json').dependencies.react
|
|
}
|
|
}
|
|
};
|