Make eslint compatible with prettier
This commit is contained in:
		
							
								
								
									
										106
									
								
								.eslintrc.js
									
									
									
									
									
								
							
							
						
						
									
										106
									
								
								.eslintrc.js
									
									
									
									
									
								
							@@ -1,69 +1,53 @@
 | 
			
		||||
module.exports = {
 | 
			
		||||
    "settings": {
 | 
			
		||||
        "react": {
 | 
			
		||||
            "version": "detect",
 | 
			
		||||
        },
 | 
			
		||||
  settings: {
 | 
			
		||||
    react: {
 | 
			
		||||
      version: "detect",
 | 
			
		||||
    },
 | 
			
		||||
    "env": {
 | 
			
		||||
        "browser": true,
 | 
			
		||||
        "es2021": true,
 | 
			
		||||
        "node": true,
 | 
			
		||||
  },
 | 
			
		||||
  env: {
 | 
			
		||||
    browser: true,
 | 
			
		||||
    es2021: true,
 | 
			
		||||
    node: true,
 | 
			
		||||
  },
 | 
			
		||||
  extends: ["plugin:react/recommended", "prettier"],
 | 
			
		||||
  overrides: [
 | 
			
		||||
    {
 | 
			
		||||
      env: {
 | 
			
		||||
        node: true,
 | 
			
		||||
      },
 | 
			
		||||
      files: [".eslintrc.{js,cjs}"],
 | 
			
		||||
      parserOptions: {
 | 
			
		||||
        sourceType: "script",
 | 
			
		||||
      },
 | 
			
		||||
    },
 | 
			
		||||
    "extends": "plugin:react/recommended",
 | 
			
		||||
    "overrides": [
 | 
			
		||||
        {
 | 
			
		||||
            "env": {
 | 
			
		||||
                "node": true,
 | 
			
		||||
            },
 | 
			
		||||
            "files": [
 | 
			
		||||
                ".eslintrc.{js,cjs}",
 | 
			
		||||
            ],
 | 
			
		||||
            "parserOptions": {
 | 
			
		||||
                "sourceType": "script",
 | 
			
		||||
            },
 | 
			
		||||
        },
 | 
			
		||||
    ],
 | 
			
		||||
    "parser": "@typescript-eslint/parser",
 | 
			
		||||
    "parserOptions": {
 | 
			
		||||
        "ecmaVersion": "latest",
 | 
			
		||||
        "sourceType": "module",
 | 
			
		||||
    },
 | 
			
		||||
    "plugins": [
 | 
			
		||||
        "@typescript-eslint",
 | 
			
		||||
        "react",
 | 
			
		||||
        "react-hooks",
 | 
			
		||||
        "react-native",
 | 
			
		||||
    ],
 | 
			
		||||
    "rules": {
 | 
			
		||||
        // Enforce tab width of 4 spaces
 | 
			
		||||
        "indent": ["error", 4, { "SwitchCase": 1 }],
 | 
			
		||||
  ],
 | 
			
		||||
  parser: "@typescript-eslint/parser",
 | 
			
		||||
  parserOptions: {
 | 
			
		||||
    ecmaVersion: "latest",
 | 
			
		||||
    sourceType: "module",
 | 
			
		||||
  },
 | 
			
		||||
  plugins: ["@typescript-eslint", "react", "react-hooks", "react-native"],
 | 
			
		||||
  rules: {
 | 
			
		||||
    // Best Practices
 | 
			
		||||
    eqeqeq: ["error", "always"], // Enforce '===' instead of '=='
 | 
			
		||||
    curly: "error", // Require curly braces for all control statements
 | 
			
		||||
    "no-unused-vars": "warn", // Warn about variables that are declared but not used
 | 
			
		||||
 | 
			
		||||
        // Best Practices
 | 
			
		||||
        "eqeqeq": ["error", "always"], // Enforce '===' instead of '=='
 | 
			
		||||
        "curly": "error", // Require curly braces for all control statements
 | 
			
		||||
        "no-unused-vars": "warn", // Warn about variables that are declared but not used
 | 
			
		||||
    // React Specific
 | 
			
		||||
    "react/jsx-filename-extension": [1, { extensions: [".tsx"] }], // Allow jsx syntax in .tsx files
 | 
			
		||||
    "react/react-in-jsx-scope": "off", // Not necessary with React 17+
 | 
			
		||||
    "react/prop-types": "off", // Not needed with TypeScript
 | 
			
		||||
 | 
			
		||||
        // Stylistic Issues
 | 
			
		||||
        "quotes": ["error", "double"], // Enforce double quotes
 | 
			
		||||
        "semi": ["error", "always"], // Enforce semicolons at the end of statements
 | 
			
		||||
        "no-multi-spaces": "error", // Disallow multiple spaces that are not used for indentation
 | 
			
		||||
        "comma-dangle": ["error", "always-multiline"], // Require trailing commas for multiline
 | 
			
		||||
    // React-Native Specific
 | 
			
		||||
    "react-native/no-unused-styles": "warn", // Warn about unused styles
 | 
			
		||||
    "react-native/split-platform-components": "warn", // Encourage splitting of React Native components into platform-specific files
 | 
			
		||||
 | 
			
		||||
        // React Specific
 | 
			
		||||
        "react/jsx-filename-extension": [1, { "extensions": [".tsx"] }], // Allow jsx syntax in .tsx files
 | 
			
		||||
        "react/react-in-jsx-scope": "off", // Not necessary with React 17+
 | 
			
		||||
        "react/prop-types": "off", // Not needed with TypeScript
 | 
			
		||||
    // TypeScript Specific
 | 
			
		||||
    "@typescript-eslint/explicit-function-return-type": "off",
 | 
			
		||||
    "@typescript-eslint/no-unused-vars": ["warn", { argsIgnorePattern: "^_" }], // Warn about variables that are declared but not used
 | 
			
		||||
 | 
			
		||||
        // React-Native Specific
 | 
			
		||||
        "react-native/no-unused-styles": "warn", // Warn about unused styles
 | 
			
		||||
        "react-native/split-platform-components": "warn", // Encourage splitting of React Native components into platform-specific files
 | 
			
		||||
 | 
			
		||||
        // TypeScript Specific
 | 
			
		||||
        "@typescript-eslint/explicit-function-return-type": "off",
 | 
			
		||||
        "@typescript-eslint/no-unused-vars": ["warn", { "argsIgnorePattern": "^_" }], // Warn about variables that are declared but not used
 | 
			
		||||
 | 
			
		||||
        // Hooks Specific
 | 
			
		||||
        "react-hooks/rules-of-hooks": "error", // Checks rules of Hooks
 | 
			
		||||
        "react-hooks/exhaustive-deps": "warn", // Checks effect dependencies
 | 
			
		||||
    },
 | 
			
		||||
    // Hooks Specific
 | 
			
		||||
    "react-hooks/rules-of-hooks": "error", // Checks rules of Hooks
 | 
			
		||||
    "react-hooks/exhaustive-deps": "warn", // Checks effect dependencies
 | 
			
		||||
  },
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
@@ -16,8 +16,9 @@
 | 
			
		||||
  "jest": {
 | 
			
		||||
    "preset": "jest-expo",
 | 
			
		||||
    "transformIgnorePatterns": [
 | 
			
		||||
    "node_modules/(?!((jest-)?react-native|@react-native(-community)?)|expo(nent)?|@expo(nent)?/.*|@expo-google-fonts/.*|react-navigation|@react-navigation/.*|@unimodules/.*|unimodules|sentry-expo|native-base|react-native-svg)"
 | 
			
		||||
  ]},
 | 
			
		||||
      "node_modules/(?!((jest-)?react-native|@react-native(-community)?)|expo(nent)?|@expo(nent)?/.*|@expo-google-fonts/.*|react-navigation|@react-navigation/.*|@unimodules/.*|unimodules|sentry-expo|native-base|react-native-svg)"
 | 
			
		||||
    ]
 | 
			
		||||
  },
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
    "@types/react": "~18.2.14",
 | 
			
		||||
    "@typescript-eslint/eslint-plugin": "^6.17.0",
 | 
			
		||||
@@ -37,7 +38,8 @@
 | 
			
		||||
  },
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
    "@babel/core": "^7.20.0",
 | 
			
		||||
    "@types/jest": "^29.5.11"
 | 
			
		||||
    "@types/jest": "^29.5.11",
 | 
			
		||||
    "eslint-config-prettier": "^9.1.0"
 | 
			
		||||
  },
 | 
			
		||||
  "private": true
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -3966,6 +3966,11 @@ escodegen@^2.0.0:
 | 
			
		||||
  optionalDependencies:
 | 
			
		||||
    source-map "~0.6.1"
 | 
			
		||||
 | 
			
		||||
eslint-config-prettier@^9.1.0:
 | 
			
		||||
  version "9.1.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz#31af3d94578645966c082fcb71a5846d3c94867f"
 | 
			
		||||
  integrity sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==
 | 
			
		||||
 | 
			
		||||
eslint-plugin-react-hooks@^4.6.0:
 | 
			
		||||
  version "4.6.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3"
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user