在 React 项目中使用 Prettier 安装 ESlint 的正确方法

问题描述

我最近开始在我的项目中使用 eslint 和 prettier,但我总是不确定我是否正确安装它们。我在网上阅读了几篇文章,似乎每篇文章的做法都不一样。我正在尝试使用 Airbnb 配置。我目前在基本的 React 应用程序中没有遇到任何错误,但我只想确保它是正确的配置。使用更漂亮的方式运行 eslint 的最佳方式是什么?

这是我的文件

.eslintrc.js

module.exports = {
  env: {
    browser: true,es2021: true,jest: true,},extends: [
    'plugin:react/recommended','airbnb','plugin:prettier/recommended',],parserOptions: {
    ecmaFeatures: {
      jsx: true,ecmaVersion: 12,sourceType: 'module',plugins: ['react','prettier'],rules: {
    'prettier/prettier': 'error','react/jsx-filename-extension': [1,{ extensions: ['.js','.jsx'] }],};

.prettierrc.js

module.exports = {
    trailingComma: "es5",tabWidth: 2,semi: true,singleQuote: true,};

在我的 package.json 中

"devDependencies": {
    "eslint": "^7.25.0","eslint-config-airbnb": "^18.2.1","eslint-config-prettier": "^8.3.0","eslint-plugin-import": "^2.22.1","eslint-plugin-jsx-a11y": "^6.4.1","eslint-plugin-prettier": "^3.4.0","eslint-plugin-react": "^7.23.2","eslint-plugin-react-hooks": "^4.2.0","prettier": "^2.2.1"
  }

解决方法

有很多方法可以设置 prettier 以使用 eslint,但它可能会令人困惑。

要将 prettier 作为 eslint 规则运行,您需要添加允许 eslint 运行 prettier 的规则。您可以使用 eslint-plugin-prettier 插件来做到这一点。

  "plugins": ["prettier"],// Defines a rule that allows eslint to run prettier.
  "rules": {
    "prettier/prettier": "error"    // Turns on that rule.
  }

您还需要关闭可能与 prettier 冲突的 eslint 规则。您可以使用 eslint-config-prettier 扩展名执行此操作。请注意,这应该放在任何其他扩展之后,以便酌情覆盖规则。

"extends": [
    /*other extensions*/,"prettier"                      // Turns off conflicting eslint rules.  
]             

根据他们的文档,听起来漂亮插件附带的推荐扩展实际上会为您处理所有事情,因此您应该能够逃脱:

  extends: [
    // .. other extensions
    'plugin:prettier/recommended',]

https://github.com/prettier/eslint-plugin-prettier

此外,如果第三方插件自带的规则可能与 prettier 冲突,您过去必须将 "prettier/that-plugin" - "prettier/react" 例如在您的情况下添加到插件列表中为了告诉 eslint 对这些非标准规则也遵循更漂亮的规则。但这似乎不再需要。

,

我使用 this guide 在 Yarn monorepo/工作区上设置带有 airbnb 风格指南的 eslint。