typescript 禁用create-react-app提供的ESLint

xggvc2p6  于 2023-04-22  发布在  TypeScript
关注(0)|答案(9)|浏览(592)

create-react-app v3.0.0 is out。它内部支持TypeScript linting。(这很好!)我想我理解TSLint的情况,并计划用ESLint取代它,但现在还没有。
如何禁用react-scripts start中的linting步骤?
/* eslint-disable */和其他人不是我要找的人。

3pvhb19x

3pvhb19x1#

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

DISABLE_ESLINT_PLUGIN=true

或者在你的包里。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

a14dhokn

a14dhokn2#

您可以将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

ne5o7dgx

ne5o7dgx3#

您可以使用Craco禁用eslint(并覆盖其他配置)。
这需要四个变化:

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

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

"scripts": {
  "build": "craco build",
  "start": "craco start",
}

这将禁用ESLint。有关如何扩展ESLint配置的示例,请参阅Craco documentation

q0qdq0h2

q0qdq0h24#

第一步

在你的项目根目录下创建.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”标志的规则以禁用它们。

9q78igpj

9q78igpj5#

不弹出的解决方法:
1.在 .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
    }
}

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

{
      "scripts": {
          "eslint:disable": "REACT_APP_DEV_DISABLE_ESLINT=true",
          "start": "npm run eslint:disable  react-scripts start"
      }
}
9q78igpj

9q78igpj6#

首先确保EXTEND_ESLINT环境变量设置为true。它可以在.env文件中设置。
对于Typescript,应该在overrides数组中添加更多规则,如下所示:

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

7xzttuei7#

我的解决方法:
添加.eslintignore文件:

*

然后用--no-ignore运行eslint。这样你就可以设置自己的eslint了。如果你需要一个忽略文件,你可以用--ignore-path来定义它,而不是使用--no-ignore选项。

vs3odd8k

vs3odd8k8#

一种方法是ejectreact-scripts-通过运行yarn eject/npm run eject-并在webpack配置文件中手动关闭eslint
请注意,虽然弹出不应该做掉以轻心和其他选项应考虑在弹出之前.请阅读Don’t eject your Create React App获得一些了解它的意思,也许一些原因的,为什么你不应该
请看一下这个叉子: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,
      }
    ]
  }
  // …
};
jhdbpxl9

jhdbpxl99#

你可能只需要禁用它的编译,但不检查我的控制台?
然后,替换start脚本或使用新脚本,例如start-force

{
  "scripts": {
    "start-force": "ESLINT_NO_DEV_ERRORS=true react-scripts start",
  }
}

相关问题