禁用 create-react-app 提供的 ESLint

Posted

技术标签:

【中文标题】禁用 create-react-app 提供的 ESLint【英文标题】:Disable ESLint that create-react-app provides 【发布时间】:2019-09-13 05:18:26 【问题描述】:

create-react-app v3.0.0 is out。它在内部支持 TypeScript linting。 (太好了!)我想我了解 TSLint 开启的情况,并打算用 ESLint 替换它,但现在不行。

如何在 react-scripts start 中禁用该 linting 步骤?

/* eslint-disable */ 和其他人不是我要找的人。

【问题讨论】:

【参考方案1】:

react-scripts v4.0.2 开始,您现在可以通过环境变量选择退出 ESLint。您可以通过将其添加到您的 .env 文件中,或者在您的 package.json 文件中为您的脚本添加前缀来做到这一点。

例如在.env:

DISABLE_ESLINT_PLUGIN=true

或者在你的 package.json 中:


  "scripts": 
    "start": "DISABLE_ESLINT_PLUGIN=true react-scripts start",
    "build": "DISABLE_ESLINT_PLUGIN=true react-scripts build",
    "test": "DISABLE_ESLINT_PLUGIN=true react-scripts test"
  

https://github.com/facebook/create-react-app/pull/10170

【讨论】:

工作正常,谢谢【参考方案2】:

您可以将 EXTEND_ESLINT 环境变量设置为 true,例如在 .env 文件中:

EXTEND_ESLINT=true

现在您可以在 package.json 文件中扩展 eslint 配置:

...
"eslintConfig": 
    "extends": "react-app",
    "rules": 
      "jsx-a11y/anchor-is-valid": "off"
    
  ,
...

要禁用 eslint,您可以添加一个文件 .eslintignore,其内容为:

*

详见文档:https://create-react-app.dev/docs/setting-up-your-editor/#experimental-extending-the-eslint-config

【讨论】:

这不会禁用 eslint。这只是将 eslint 排除在所有文件中。技术上不一样。【参考方案3】:

您可以使用Craco 禁用eslint(并覆盖其他配置)。

需要 4 次更改:

    npm install @craco/craco --save 创建 craco.config.js(与 package.json 在同一文件夹中) 用:填充craco.config.js
module.exports = 
  eslint: 
    enable: false,
  ,
;

最后,在 package.json 脚本中将 react-script 替换为 craco,即

"scripts": 
  "build": "craco build",
  "start": "craco start",


这将禁用 ESLint。扩展 ESLint 配置的示例参考Craco documentation。

【讨论】:

【参考方案4】:

步骤 1

在你的项目根目录中创建.env 文件(如果它不存在)并将这一行添加到它

EXTEND_ESLINT=true

第二步

.eslintrc.js 添加到您的项目根目录,并包含以下内容

module.exports = 
  "extends": ["react-app"],
  "rules": 
  ,
  "overrides": [
    
      "files": ["**/*.js?(x)"],
      "rules": 
// ******** add ignore rules here *********
        "react/no-unescaped-entities": "off",
        "react/display-name": "off",
        "react/prop-types": "off",
      
    
  ]

注意override > rules 部分:添加带有“off”标志的规则以禁用它们。

【讨论】:

【参考方案5】:

我没有弹出的解决方法:

    像这样在 .eslintrc.js 中使用环境变量:
module.exports = 
    "extends": process.env.REACT_APP_DEV_DISABLE_ESLINT ? [] : [
      "eslint:recommended",
      "plugin:import/errors",
      "plugin:import/warnings",
      "plugin:json/recommended",
      "plugin:@typescript-eslint/recommended",
      "plugin:jsx-a11y/recommended",
      "plugin:react/recommended",
    ],
    "rules": process.env.REACT_APP_DEV_DISABLE_ESLINT ?  : 
      // ...rules for production CI
    

    package.json的启动脚本中设置变量:

      "scripts": 
          "eslint:disable": "REACT_APP_DEV_DISABLE_ESLINT=true",
          "start": "npm run eslint:disable  react-scripts start"
      

【讨论】:

【参考方案6】:

首先确保EXTEND_ESLINT 环境变量设置为true。可以在.env文件中设置。

对于 Typescript,应在 overrides 数组中添加更多规则,如下例所示:


  "eslintConfig": 
    "extends": ["react-app"],
    "overrides": [
      
        "files": ["**/*.ts?(x)"],
        "rules": 
          "eqeqeq": "warn"
        
      
    ]
  

【讨论】:

发生在我身上的一件有趣的事是,虽然这隐藏了我想要的那个,但它也产生了以前从未见过的新的。【参考方案7】:

一种方法是 eject react-scripts - 通过运行 yarn eject / npm run eject - 并在 webpack 配置文件中手动关闭 eslint

请注意,尽管弹出不应轻率地进行,并且应在弹出之前考虑其他选项。请阅读Don’t eject your Create React App 以了解它的含义,或许还有一些你不应该这样做的原因

请看一下这个fork:create-react-app closer look,尤其是在eject-tic_tac_toe 目录,你有scripts/start.js - 在yarn start / npm start 之后发生魔法的脚本 - 和config/webpack.config.dev.js - 其中你有 webpack 的配置,在start.js 中使用。这是您可能有兴趣编辑的部分:

// …
module.exports = 
  // …
  module: 
    preLoaders: [
      
        test: /\.(js|jsx)$/,
        loader: 'eslint',
        include: paths.appSrc,
      
    ]
  
  // …
;

【讨论】:

【参考方案8】:

我的解决方法:

添加 .eslintignore 文件:

*

并使用--no-ignore 运行 eslint。因此,您可以设置自己的 eslint。如果您需要忽略文件,可以使用 --ignore-path 定义它,而不是使用 --no-ignore 选项。

【讨论】:

以上是关于禁用 create-react-app 提供的 ESLint的主要内容,如果未能解决你的问题,请参考以下文章

使用 Flask 为使用 create-react-app 创建的前端提供服务

如何使用 create-react-app 提供 SSL 证书?

在create-react-app中调试es6

create-react-app 不提供样板应用程序

没有提供模板。这可能是因为您使用的是过时版本的 create-react-app(NPM 问题)

使用 create-react-app 和 webpack 发出 CORS API 请求 - 不明确