create-react-app禁用eslint插件

1,189 阅读2分钟

问题描述

最近将一个nextjs做的ssr应用转成以create-react-app(以下简称cra)为脚手架的spa应用,基础的配置之后,npm run start满屏的eslint报错...遂想办法先在运行时禁用相关的webpack eslint插件,后续在编辑具体的文件时再进行eslint fix

解决过程

第一反应就是搜索官网的eslint关键词,没有找到禁用eslint相关的配置。

网上找了搜了搜,热门的答案基本上就这两种:

  1. eject之后注释掉react-scripts里相关配置
  2. 直接关闭相关规则

先说第一种,现在谁用cra会去eject的?一般都是通过craco之类的工具去自定义配置,不过这个倒是给我提供了思路,稍后再说。

第二种也不是我想要的效果,我仍然要用eslint,并且不会因为代码报错了就禁用掉这个规则,我只是不想要在运行时报错, 因为我一般是通过vscode + eslint插件配合上git husky去做eslint fix

解决方法

通过网上搜的第一种方法,去react-scirpts中找到webpack.config.js,搜索eslint关键字: image.png

可以看到EslintPlugin是由disableESLintPlugin来控制的,搜索disableESLintPlugin关键字: image.png 可以看到是由DISABLE_ESLINT_PLUGIN这个环境变量控制的,从代码来看disableESLintPlugin初始值是false,就是默认情况下会调用EslintPlugin

在官网里搜下DISABLE_ESLINT_PLUGIN关键字果然有这个配置! image.png

最终结论:只要把DISABLE_ESLINT_PLUGIN这个环境变量设置成true就大功告成了!

cra中可以通过如下方式设置环境变量:

  1. 新建.env文件,写入如下内容:
DISABLE_ESLINT_PLUGIN=true
  1. 通过cross-env设置:
    1. 先执行npm install --D cross-env
    2. scirpt前面加上cross-env DISABLE_ESLINT_PLUGIN=true

使用craco自定义cra配置

如果当前项目用的是craco,那禁用eslint就很容易了,只要修改一处配置就可以了,在craco.config.js配置文件中加入:

eslint: {
    enable: false
}