mirror of
https://github.com/react/react-native.git
synced 2026-09-28 05:13:06 +08:00
Summary: Implements: https://github.com/facebook/react-native/issues/42996 Add support for Flat config (eslint v9) to `eslint-config-react-native`. To achieve this, I created `packages/eslint-config-react-native/flat.js` to export flat config as well as maintain legacy config for backward compatibility. I recognize we have had [the PR for supporting Flat config](https://github.com/facebook/react-native/issues/42996) already, but it looks stale and doesn't seem likely to move forward. That's why I created this PR. I also updated `eslint-plugin-react-native` and `eslint-plugin-specs` so that they comply with the current eslint plugin format. ## Changelog: [GENERAL] [ADDED] - Add support for Flat Config (eslint v9) Pull Request resolved: https://github.com/facebook/react-native/pull/54297 Test Plan: 1. Pull this branch into your local machine 2. `cd packages/eslint-config-react-native` 3. `yarn link` 4. Clone https://github.com/pipopotamasu/rn-eslint-config-test in your local machine 5. `cd path/to/rn-eslint-config-test` 6. `yarn install` 7. `yarn link "react-native/eslint-config"` 8. `yarn lint` 9. Confirm that eslint rules from `react-native/eslint-config` are applied <img width="1470" height="628" alt="image" src="https://github.com/user-attachments/assets/955fd655-8a79-4dd4-9031-e505d218d63a" /> Reviewed By: vzaidman Differential Revision: D85851077 Pulled By: huntie fbshipit-source-id: 9c78ecc4f5c3b10175a89417628b599735f95215
72 lines
1.4 KiB
JavaScript
72 lines
1.4 KiB
JavaScript
/**
|
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*
|
|
* @format
|
|
* @noflow
|
|
*/
|
|
|
|
const sharedConfig = require('./shared.js');
|
|
|
|
module.exports = {
|
|
env: {
|
|
es6: true,
|
|
},
|
|
|
|
parserOptions: sharedConfig.parserOptions,
|
|
|
|
extends: ['prettier'],
|
|
|
|
plugins: [
|
|
'eslint-comments',
|
|
'react',
|
|
'react-hooks',
|
|
'react-native',
|
|
'@react-native',
|
|
'jest',
|
|
],
|
|
|
|
settings: sharedConfig.settings,
|
|
|
|
overrides: [
|
|
{
|
|
...sharedConfig.overrides.flow,
|
|
files: ['*.js'],
|
|
parser: '@babel/eslint-parser',
|
|
plugins: ['ft-flow'],
|
|
},
|
|
{
|
|
files: ['*.jsx'],
|
|
parser: '@babel/eslint-parser',
|
|
},
|
|
{
|
|
...sharedConfig.overrides.reactNative,
|
|
files: ['*.js', '*.jsx', '*.ts', '*.tsx'],
|
|
},
|
|
{
|
|
...sharedConfig.overrides.typescript,
|
|
files: ['*.ts', '*.tsx'],
|
|
parser: '@typescript-eslint/parser',
|
|
plugins: ['@typescript-eslint/eslint-plugin'],
|
|
},
|
|
{
|
|
...sharedConfig.overrides.jest,
|
|
files: [
|
|
'*.{spec,test}.{js,ts,tsx}',
|
|
'**/__{mocks,tests}__/**/*.{js,ts,tsx}',
|
|
],
|
|
env: {
|
|
jest: true,
|
|
'jest/globals': true,
|
|
},
|
|
},
|
|
],
|
|
|
|
// Map from global var to bool specifying if it can be redefined
|
|
globals: sharedConfig.globals,
|
|
|
|
rules: sharedConfig.rules,
|
|
};
|