kursat
9/16/2019 - 12:42 PM

React Eslint/Prettier Configuration

React Eslint/Prettier Configuration

module.exports = {
    "extends": [
        "standard",
        "plugin:react/recommended",
        "prettier",
        "prettier/react"
    ],
    "plugins": [
        "react",
        "prettier"
    ],
    "parserOptions": {
        "ecmaFeatures": {
            "jsx": true
        }
    },
    "parser": "babel-eslint",
    "env": {
        "browser": true,
        "commonjs": true,
        "es6": true,
        "node": true
    },
    "settings": {
        "react": {
            "pragma": "React",
            "version": "detect",
        },
    },
    "rules": {
        "prettier/prettier": [
            "error",
            {
                "singleQuote": true,
                "trailingComma": "all",
                "bracketSpacing": false,
                "jsxBracketSameLine": true,
                "useTabs": true
            }
        ],
        "quotes": 0,
        "no-console": 1,
        "no-debugger": 1,
        "no-var": 1,
        "semi": [
            1,
            "always"
        ],
        "linebreak-style": [
            "error",
            "unix"
        ],
        "no-global-assign": "off",
        "no-unsafe-negation": "off",
        "no-trailing-spaces": 0,
        "eol-last": 0,
        "no-underscore-dangle": 0,
        "no-alert": 0,
        "no-lone-blocks": 0,
        "jsx-quotes": 1,
        "no-constant-condition":0,
        "eqeqeq": 0,
        "react/display-name": [
            1,
            {
                "ignoreTranspilerName": false
            }
        ],
        "react/forbid-prop-types": [
            1,
            {
                "forbid": [
                    "any"
                ]
            }
        ],
        "react/jsx-boolean-value": 0,
        "react/jsx-closing-bracket-location": 0,
        "react/jsx-curly-spacing": 1,
        "react/jsx-indent-props": 0,
        "react/jsx-key": 1,
        "react/jsx-max-props-per-line": 0,
        "react/jsx-no-bind": 0,
        "react/jsx-no-duplicate-props": 1,
        "react/jsx-no-literals": 0,
        "react/jsx-no-undef": 1,
        "react/jsx-pascal-case": 1,
        "react/jsx-sort-prop-types": 0,
        "react/jsx-sort-props": 0,
        "react/jsx-uses-react": 1,
        "react/jsx-uses-vars": 1,
        "react/jsx-wrap-multilines": 1,
        "react/no-danger": 1,
        "react/no-did-mount-set-state": 0,
        "react/no-did-update-set-state": 1,
        "react/no-direct-mutation-state": 1,
        "react/no-multi-comp": 0,
        "react/no-set-state": 0,
        "react/no-unknown-property": 1,
        "react/prefer-es6-class": 1,
        "react/prop-types": 0,
        "react/react-in-jsx-scope": 1,
        "import/extensions": 1,
        "react/self-closing-comp": 1,
        "react/sort-comp": 1,
		"no-template-curly-in-string": 1,
		"node/no-deprecated-api": 0
    }
};
{
	...
	"scripts": {
		...
		"lint": "esw src/.",
		"lint:watch": "npm run lint --watch",
		"lint:fix-all": "eslint src/. --fix",
	},
	"dependencies": {
		...
	},
	"devDependencies": {
		...
	},
	"husky": {
		"hooks": {
			"pre-commit": "lint-staged"
		}
	},
	"lint-staged": {
		"*.js": [
			"eslint --fix",
			"git add"
		],
		"*.jsx": [
			"eslint --fix",
			"git add"
		]
	}
}