Files
plaidware-wms-web/.eslintrc.js
2022-01-13 22:28:45 +05:30

102 lines
2.6 KiB
JavaScript

module.exports = {
root: true,
env: {
browser: true,
commonjs: true,
es6: true,
},
extends: ["eslint:recommended", "plugin:react/recommended"],
parser: "babel-eslint",
parserOptions: {
ecmaFeatures: {
jsx: true,
modules: true,
experimentalObjectRestSpread: true,
},
ecmaVersion: 2020,
sourceType: "module",
},
plugins: ["react"],
rules: {
// general
indent: ["error", 2, { SwitchCase: 1, ignoredNodes: ["TemplateLiteral"] }],
"linebreak-style": ["error", "unix"],
quotes: ["error", "single"],
semi: ["error", "always"],
"comma-dangle": [
"error",
{
arrays: "never",
objects: "never",
imports: "never",
exports: "never",
functions: "ignore",
},
],
"object-curly-spacing": ["error", "always"],
"eol-last": ["error", "always"],
"no-console": process.env.NODE_ENV === "production" ? "error" : "warn",
complexity: ["error", { max: 20 }],
eqeqeq: ["error", "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,
},
},
};