我已经非常习惯于在保存时让VSCode自动格式化我的文件。通常情况下,我使用Prettier。但我加入了一个使用ESLint来管理其代码风格的项目,我想与团队的格式化相匹配。
我希望在保存时有那种甜蜜的自动格式化,但使用项目根目录下的eslintrc.json 文件,而不是Prettier。
大多数博客文章都想把这个做成一个完整的教程......如何设置eslint,如何创建.eslintrc文件,等等......但我不需要这些。我有一个现有的项目,我只是想配置VSCode来使用ESLint而不是Prettier。
结果这只需要4行的设置配置和一个插件。
下面是如何做的:
1.安装VSCode ESLint插件
在VSCode中,用左边的按钮打开扩展浏览器。在Mac上,键盘上的快捷键Cmd+Shift+X应该也能做到。
搜索eslint
安装顶部的结果,称为 "ESLint"。(就是这个下载量超过1000万的)
2.配置VSCode设置以使用ESLint进行格式化
打开VSCode的设置。在Mac上,按Cmd+, ,或通过菜单到达那里。代码 > 偏好 > 设置。
它将打开花哨的设置编辑器,但我们需要原始的JSON设置文件来代替。
点击右上角的小图标,看起来像一张带小箭头的纸:

在顶层设置对象中添加这4个新行:
{
// ...
"eslint.format.enable": true,
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
}
}
第一行打开ESLint进行格式化,接下来的三行让它在你点击保存时进行格式化。
这应该就可以了!保存设置文件并关闭它,我们就完成了。
试着对一个文件做一些违反ESLint规则的修改--也许是在需要分号的情况下省去分号?- 然后按保存。它应该会自动格式化。
格式化还在使用Prettier吗?
我最近遇到了一个问题,Prettier的设置覆盖了ESLint的设置。老实说,我不确定这些设置是怎么进去的......也许是我把它们放进去后忘了。
在任何情况下,如果你想让ESLint缩进你的文件,确保Prettier没有覆盖它。找出任何像这样的行,说defaultFormatter 应该是Prettier(Cmd+F或Ctrl+F为 "prettier",因为可能有几个!),并把它们注释掉:
// "[javascriptreact]": {
// "editor.defaultFormatter": "esbenp.prettier-vscode"
// },
如果你切换回一个不使用ES Lint的项目,你可能需要撤销这个。