接上篇【工程化】如何配置lint 01提出的疑问, eslint rules规则为什么老是和preitter rules规则冲突?
冲突表现
比如在eslint
// eslintrc.js
{ "rules": { "indent": ["error", 2] // 使用2个空格缩进 } }
在prettier
// .prettierrc 文件
{
"singleQuote": true, // 使用单引号
"tabWidth": 2 // 使用2个空格缩进
}
他们就会产生冲突, 所以针对这种问题,也有对应的解决方案
冲突解决方案
冲突的原因是,则是因为Eslint也有代码风格格式化的能力, 也有代码逻辑处理的能力, 而Preitter只有代码风格处理能力,根据why-not-prettier文中提到,社区有针对此问题的解决方案, 比如eslint-config-prettier,当然也有其他的解决方案
关于eslint-config-prettier我看到配置有两种写法,
方式一
pnpm add prettier eslint-config-prettier -D
eslint-config-prettier: 主要用于关闭Eslint中与Prettier冲突的格式化规则,确保eslint不会干扰Prettier对代码的格式化
pnpm add prettier eslint-config-prettier eslint-plugin-prettier -D
关闭的规则,具体可以点击这里
{ "extends": ["eslint:recommended", "plugin:prettier/recommended"] }
随便搜了一个规则, 都是在eslint V8.53.0 之后会移除的,可以参考这篇博客deprecating-formatting-rule, 也就是当我们升级到 V8.53.0 之后,可以不用这些插件来解决 Peritter 与eslint冲突的问题了?
文章中给出的format解决方案是
1、使用 prettier
那正好不用担心eslint 和prettier冲突了,也不用借助什么插件
2、使用dprint
基于rust的fomatter
3、针对ts的@stylistic/eslint-plugin-ts, 或者针对js的格式化@stylistic/eslint-plugin-js
上述两个是eslint remove的与格式化相关的规则的合集, 由antfu维护eslint-stylistic, 他自己写的一个eslint-config可以在不使用Prettier的情况下,借助eslint-stylistic也能实现代码格式化
方式二
eslint-plugin-prettier:用于将 Prettier 作为 ESLint 插件运行,主要用于在 ESLint 中运行 Prettier 并检测格式问题
"extends": [
"some-other-config-you-use",
"plugin:prettier/recommended"
],
"plugins": ["prettier"],
通常两者一起使用, 就是方式二
总结
日常工作中,还是prettier 与eslint 一起使用, 在V8.53.0之前,他们俩一起使用的时候,要避免冲突,可以借助eslint-config-prettier 和eslint-plugin-prettier
V8.53.0之后的话,Eslint和Prettier一起使用的话,我觉得这类插件就可以不用再使用了
或者你可以想antfu 一样, 不用prettier来对代码进行格式化,而是借助他的工具eslint-config