Files
plaidware-wms-web/.eslintrc.js
Llewellyn Dsouza ef4e3a2d9f Fix: eslint config
2022-03-08 08:03:20 +05:30

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
}
}
};