47 lines
1.8 KiB
JavaScript
47 lines
1.8 KiB
JavaScript
module.exports = {
|
|
root: true,
|
|
extends: '@react-native',
|
|
rules: {
|
|
// React Native
|
|
'react-native/no-unused-styles': 'error',
|
|
'react-native/no-inline-styles': 'warn',
|
|
'react-native/no-color-literals': 'warn',
|
|
'react-native/no-raw-text': 'off',
|
|
|
|
// TypeScript
|
|
'@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_' }],
|
|
'@typescript-eslint/no-explicit-any': 'error',
|
|
'@typescript-eslint/explicit-function-return-type': 'off',
|
|
'@typescript-eslint/explicit-module-boundary-types': 'off',
|
|
'@typescript-eslint/no-non-null-assertion': 'warn',
|
|
'@typescript-eslint/no-unused-expressions': 'error',
|
|
'@typescript-eslint/no-shadow': 'error',
|
|
'no-shadow': 'off', // Désactivé au profit de la version TypeScript
|
|
|
|
// React/Hooks
|
|
'react-hooks/rules-of-hooks': 'error',
|
|
'react-hooks/exhaustive-deps': 'warn',
|
|
'react/no-unstable-nested-components': ['error', { allowAsProps: true }],
|
|
'react/jsx-no-bind': ['warn', { allowArrowFunctions: true }],
|
|
'react/no-array-index-key': 'error',
|
|
|
|
// Code Quality
|
|
'no-console': ['warn', { allow: ['warn', 'error'] }],
|
|
'prefer-const': 'error',
|
|
'no-var': 'error',
|
|
'eqeqeq': ['error', 'always'],
|
|
'no-duplicate-imports': 'error',
|
|
'no-return-await': 'error',
|
|
'no-param-reassign': ['error', { props: false }],
|
|
'no-throw-literal': 'error',
|
|
'max-lines': ['error', { max: 600, skipBlankLines: true }],
|
|
'max-len': ['error', { code: 100, ignoreUrls: true, ignoreStrings: true, ignoreTemplateLiterals: true }],
|
|
|
|
// Style
|
|
'arrow-body-style': ['error', 'as-needed'],
|
|
'object-shorthand': ['error', 'always'],
|
|
'prefer-template': 'error',
|
|
'prefer-destructuring': ['error', { array: false, object: true }],
|
|
},
|
|
};
|