问题描述
最近将一个nextjs做的ssr应用转成以create-react-app(以下简称cra)为脚手架的spa应用,基础的配置之后,npm run start满屏的eslint报错...遂想办法先在运行时禁用相关的webpack eslint插件,后续在编辑具体的文件时再进行eslint fix。
解决过程
第一反应就是搜索官网的eslint关键词,没有找到禁用eslint相关的配置。
网上找了搜了搜,热门的答案基本上就这两种:
eject之后注释掉react-scripts里相关配置- 直接关闭相关规则
先说第一种,现在谁用cra会去eject的?一般都是通过craco之类的工具去自定义配置,不过这个倒是给我提供了思路,稍后再说。
第二种也不是我想要的效果,我仍然要用eslint,并且不会因为代码报错了就禁用掉这个规则,我只是不想要在运行时报错,
因为我一般是通过vscode + eslint插件配合上git husky去做eslint fix。
解决方法
通过网上搜的第一种方法,去react-scirpts中找到webpack.config.js,搜索eslint关键字:
可以看到EslintPlugin是由disableESLintPlugin来控制的,搜索disableESLintPlugin关键字:
可以看到是由
DISABLE_ESLINT_PLUGIN这个环境变量控制的,从代码来看disableESLintPlugin初始值是false,就是默认情况下会调用EslintPlugin
在官网里搜下DISABLE_ESLINT_PLUGIN关键字果然有这个配置!
最终结论:只要把DISABLE_ESLINT_PLUGIN这个环境变量设置成true就大功告成了!
cra中可以通过如下方式设置环境变量:
- 新建
.env文件,写入如下内容:
DISABLE_ESLINT_PLUGIN=true
- 通过
cross-env设置:- 先执行
npm install --D cross-env scirpt前面加上cross-env DISABLE_ESLINT_PLUGIN=true
- 先执行
使用craco自定义cra配置
如果当前项目用的是craco,那禁用eslint就很容易了,只要修改一处配置就可以了,在craco.config.js配置文件中加入:
eslint: {
enable: false
}