diff --git a/.husky/.gitignore b/.husky/.gitignore new file mode 100644 index 00000000..31354ec1 --- /dev/null +++ b/.husky/.gitignore @@ -0,0 +1 @@ +_ diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100755 index 00000000..36af2198 --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,4 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +npx lint-staged diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 00000000..fa327682 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,7 @@ +{ + "trailingComma": "es5", + "semi": true, + "singleQuote": false, + "tabWidth": 2, + "useTabs": false +} diff --git a/eslintrc.json b/eslintrc.json index ce06b5bf..5b25cb05 100644 --- a/eslintrc.json +++ b/eslintrc.json @@ -3,23 +3,26 @@ "eslint:recommended", "plugin:import/errors", "plugin:react/recommended", - "plugin:jsx-a11y/recommended" + "plugin:jsx-a11y/recommended", + "prettier" ], - "plugins": ["react", "import", "jsx-a11y"], + "plugins": ["react", "import", "jsx-a11y", "prettier"], "rules": { "react/prop-types": 0, "indent": ["error", 2], "linebreak-style": 1, - "quotes": ["error", "double"] + "quotes": ["error", "double"], + "prettier/prettier": "error" }, "parserOptions": { - "ecmaVersion": 2021, + "ecmaVersion": 12, "sourceType": "module", "ecmaFeatures": { "jsx": true } }, "env": { + "es2021": true, "es6": true, "browser": true, "node": true diff --git a/package.json b/package.json index 408f0b3d..7948ced6 100644 --- a/package.json +++ b/package.json @@ -44,7 +44,6 @@ "split-graphemes": "^0.5.0", "use-sound": "^4.0.1", "web-vitals": "^2.1.4", - "eslint": "^8.46.0", "eslint-plugin-import": "^2.28.0", "eslint-plugin-jsx-a11y": "^6.7.1", "eslint-plugin-react": "^7.33.1" @@ -70,7 +69,10 @@ "react-app", "react-app/jest" ], - "ignorePatterns": ["build/", "public/js/jquery-3.7.0.min.js"] + "ignorePatterns": [ + "build/", + "public/js/jquery-3.7.0.min.js" + ] }, "browserslist": { "production": [ @@ -83,5 +85,26 @@ "last 1 firefox version", "last 1 safari version" ] + }, + "devDependencies": { + "eslint": "^7.32.0", + "prettier": "^2.3.2", + "eslint-config-prettier": "^8.3.0", + "eslint-plugin-prettier": "^3.4.0", + "husky": "^9.0.11", + "lint-staged": "^11.0.0", + "react": "^18.2.0", + "@mui/styles": "^5.15.10" + }, + "lint-staged": { + "src/**/*.{js,jsx}": [ + "npx eslint --fix", + "npx prettier --write" + ] + }, + "husky": { + "hooks": { + "pre-commit": "npx lint-staged" + } } }