漂亮的eslint,eslint的插件prettier和eslint的配置prettier有什么区别?


93

我想同时使用Prettier和ESLint,但是仅通过一个接一个地使用它们,我遇到了一些冲突。我看到似乎有这三个软件包可以让它们串联使用:

  • prettier-eslint
  • eslint-plugin-prettier
  • eslint-config-prettier

但是,我不确定要使用哪个包名称,因为它们都包含eslintprettier

我应该使用哪个?

Answers:


208

ESLint包含许多规则和那些格式化相关的更漂亮有可能会发生冲突,比如arrow-parensspace-before-function-paren等。因此使用它们在一起会引起一些问题。已创建以下工具,以将ESLint和Prettier一起使用。

我基于要点以表格格式编写了一个比较,因为Stack Overflow不支持表格格式。如果您更喜欢组织,请查看。

在此处输入图片说明

prettier-eslint:先运行,prettier然后eslint --fix在代码上运行。eslint通常具有自动修复格式相关规则的功能,并且eslint --fix能够修复Prettier引入的冲突格式。您无需prettier单独运行该命令。

eslint-plugin-prettier:这是一个ESLint插件,这意味着它包含ESLint将检查的其他规则的实现。此插件在内部使用Prettier,并且当您的代码与Prettier的预期输出不同时,它将引发问题。这些问题可以通过自动修复--fix。使用此插件,您无需prettier单独运行命令,该命令作为插件的一部分运行。此插件不会关闭与格式相关的规则,如果您手动或通过看到此类规则有冲突,则需要将其关闭eslint-config-prettier

eslint-config-prettier:这是一个ESLint配置,它包含规则的配置(某些规则是打开,关闭还是特殊配置)。此配置允许您将Prettier与其他ESLint配置一起使用,例如eslint-config-airbnb通过关闭可能与Prettier冲突的与格式相关的规则。使用此配置,您不需要使用,prettier-eslint因为Prettier格式化代码后,ESLint不会抱怨。但是,您将需要prettier单独运行该命令。

希望这可以总结出差异。

更新:建议让Prettier处理格式化和ESLint处理非格式化问题,prettier-eslint这与该做法的方向不同,因此prettier-eslint不再推荐。您可以一起使用eslint-plugin-prettiereslint-config-prettier


我有一个eslintrc文件,其中有自定义规则。即no-extra-semi,但是以更漂亮的方式运行eslint --fix需要使用半冒号,我是否需要一个单独的更漂亮的规则文件?
jasan '17

2
只是评论eslint插件和config之间的一般区别,因为我觉得那是我所缺少的:插件定义了新的eslint规则,而configs是否设置(以及如何应用)规则。
laugri

1
使用eslint-config-prettier,为什么我们需要更漂亮?不会eslint --fix以更漂亮的方式格式化代码吗?
Mateo Hrastnik '18

@MateoHrastnik ESLint无法处理所有可能的格式问题。引用此线程-github.com/prettier/prettier-eslint/issues/101
Yangshun Tay

10
现在是2019年,这仍然是我发现的最好的解释,比官方解释的要好得多。您可能会添加不再建议使用更漂亮的夹板。后两个现在可以一起工作了。
Fate Riddle
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.