ESLint(Airbnb)+在TypeScript中为React Native(Expo)提供更漂亮的设置

c2e8gylq  于 2023-01-05  发布在  React
关注(0)|答案(1)|浏览(153)

我已经为我的React Native项目设置了几个星期的linting & formatings,但是我无法取得太大的进展。我已经看了很多教程,并且尽我所能地遵循它们,但是似乎仍然有一些设置问题。
我的项目有一个Django后端和React Native前端,因此React应用(在src/frontend目录中)使用Expo、Yarn和TypeScript从这里的教程开始:https://reactnative.dev/docs/environment-setup.
没有对这个设置做进一步的更改,我尝试向它添加ESLint & Prettier。
这些是我的配置文件:

  1. .eslintrc.js
module.exports = {
  parser: '@typescript-eslint/parser',
  parserOptions: {
    project: 'tsconfig.json',
    tsconfigRootDir: __dirname,
  },
  plugins: [
    '@typescript-eslint',
    'import',
    'react',
    'react-hooks',
    'react-native',
    'prettier',
  ],
  extends: [
    'airbnb-typescript',
    'plugin:import/recommended',
    'plugin:import/typescript',
    'plugin:react/recommended',
    'plugin:react-hooks/recommended',
    'prettier',
    'plugin:prettier/recommended',
  ],
  rules: {
    'no-use-before-define': 'off',
    '@typescript-eslint/no-use-before-define': ['error'],
    'prettier/prettier': 'error',
  },
};
  1. .prettierrc.json
{
  "singleQuote": true
}
  1. tsconfig.json
{
  "extends": "expo/tsconfig.base",
  "compilerOptions": {}
}

举几个我遇到的严重错误的例子,我得到了import/namespace对应react-native,它说';' expected,在定义之前使用的变量,如styles,解析错误"parserOptions.project"已经为@typescript-eslint/parser设置,.eslintrc.js与项目配置不匹配。

nhhxz33t

nhhxz33t1#

最后我创建了tsconfig.eslint.json,内容如下:

{
  "extends": "./tsconfig.json",
  "include": [".eslintrc.js", "**/*.js", "**/*.jsx", "**/*.ts", "**/*.tsx"]
}

因此将parserOptions.project更改为'tsconfig.eslint.json'起作用。

相关问题