最近vue项目开发和打包过程中lintOnSave的配置项引发了几次问题,让我有些摸不着头脑,同时也引起了我的一些思考:
lintOnSave是否会对生产环境打包产生影响?lintOnSave不同配置下:是否会阻断打包的流程?是否在控制台输出日志?是否会出现遮罩层错误提示?
翻阅文档,其中的vue-cli lintOnSave 配置参考中是这样描述其作用的:
- Type:
boolean|'warning'|'default'|'error'- Default:
'default'是否在开发环境下通过 eslint-loader z在每次保存时 lint 代码。这个值会在@vue/cli-plugin-eslint被安装之后生效。
按文档意思,我想很多人理解应该是:只会影响开发模式,且只会对代码进行lint操作,且项目中一定要安装@vue/cli-plugin-eslint 。 然而实际情况真的是这样吗?
带着疑问(线上生产打包,曾因为配置了lintOnSave:true输出了很多错误日志),继续本地搭建demo进行测试。
macos v12.1
node v14.14.0
npm v6.14.8
@vue/cli v4.5.15 // 主要关注vue-cli的版本
... // 使用vue create demo 创建demo项目,并添加 Linter / Formatter (eslinti相关插件会被自动安装)
经过反复测试,得出以下结论:
- 注意: 在测试的过程中,遇到另外的坑
-
npm run serve命令 ,同样的lintOnSave配置,同样的错误代码,如果不对代码进行保存的操作,代码中的错误有可能不会被发现!!! 。 -
执行
npm run build时,代码中的错误也有可能不会被发现。 一定要写几行错误代码保存后再运行打包命令!!! what the funk!!!!
-
其实从测试结果中,我大致明白了lintOnSave使用。就像文档说的一样,这个配置项是为了 开发模式准备的,所以错误代码需要在保存操作后才能输出lint结果,不然有点对不起lintOnSave这个配置项的字面含义了。但是对生产的影响,还需要再进一步探究。
纸上得来终觉浅,但是最近没有时间去阅读 @vue/cli-service的源码了(也不一定有那能力😂)。 欢迎大家讨论指正,也期待大佬能给出更详细深入的解读。