diff --git a/.eslintrc.js b/.eslintrc.js index 87c1249..68e2cfa 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -25,8 +25,40 @@ module.exports = { }, "plugins": [ "@typescript-eslint", - "react" + "react", + "react-hooks", + "react-native" ], "rules": { - } -} + // Enforce tab width of 4 spaces + "indent": ["error", 4, { "SwitchCase": 1 }], + + // 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 + + // Stylistic Issues + "quotes": ["error", "single"], // Enforce single 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 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 + + // 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 + }, +}; diff --git a/package.json b/package.json index 4a24e56..6a72aa0 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "android": "expo start --android", "ios": "expo start --ios", "web": "expo start --web", - "lint": "eslint . --ext .ts,.tsx", + "lint": "eslint . --ext .js,.ts,.tsx", "lint:fix": "eslint . --ext .ts,.tsx --fix" }, "dependencies": {