我正在尝试设置一些工具来帮助多个开发人员维护代码库的一致性。是否需要同时使用EditorConfig、ESLint和Prettier?
据我所知,EditorConfig用于设置编码风格/规则,ESLint用于确保代码按照规则进行格式化,如果代码不遵循规则会发出警告,而Prettier则基于规则自动格式化代码。然而,我相信您可以在Prettier中自定义规则,从而完成了EditorConfig的工作。这是真的吗?什么样的工具组合最适合用于维护一致的代码?
我正在尝试设置一些工具来帮助多个开发人员维护代码库的一致性。是否需要同时使用EditorConfig、ESLint和Prettier?
据我所知,EditorConfig用于设置编码风格/规则,ESLint用于确保代码按照规则进行格式化,如果代码不遵循规则会发出警告,而Prettier则基于规则自动格式化代码。然而,我相信您可以在Prettier中自定义规则,从而完成了EditorConfig的工作。这是真的吗?什么样的工具组合最适合用于维护一致的代码?
根据我的经验,最好的组合是三者全部使用,原因如下:
EditorConfig:它可以帮助你的编辑器在编写代码时制定符合您的样式指南的代码格式。虽然这不是实现您目标的必要条件,但是如果您总是看着遵循相同编码样式的代码,那会很不错。否则,如果您没有设置EditorConfig,则在输入代码时,您的编辑器将自动按照与其余代码库不同的方式进行格式化,这是令人困惑的。当然,如果您已经设置了Prettier,它会在代码进入代码库之前修复它,但是为什么在编写代码时要以一种格式查看它,然后在提交时更改呢?最好保持一致。
Prettier:自动格式化您的代码。我喜欢把它设置为在暂存文件时进行格式化,这样我就无法提交不符合我的样式指南的代码。
ESLint:那么为什么还需要一个linter?因为ESLint不仅关注样式,还能检测出声明但未使用的变量或引用未定义的东西等其他问题。因此,尽管在Prettier问世之前它的作用有所减弱,但在项目中仍然有用,可以捕捉其他错误。
Prettier会移除所有原本的样式,并确保所有输出的代码符合统一的风格。
prettier --write .
EditorConfig 可以帮助多个开发人员在不同的编辑器和IDE上维护一致的编码样式。
ESLint 静态分析你的代码,快速找出问题。
总而言之:
想深入了解的有用资源:
还可以查看 React 框架的存储库:
<div *ngIf="ability?.length > 0 && ! loading" tabindex="0" myCustomDirective class="col-lg responsive-input-wrapper d-flex align-items-center" role="navigation" aria-label="Primary">
<div
ngIf="ability?.length > 0 && ! loading"
tabindex="0"
myCustomDirective
class="col-lg responsive-input-wrapper d-flex align-items-center"
role="navigation"
aria-label="Primary"
>
那肯定对于自己来说更易读。不过有几点需要注意:在编辑HTML时,你很少关心所有的属性。通常你会有一个具体的目标。比如说你要给某个元素添加样式,那么你会扫描代码中的"class"属性,并更关注整体结构。
Prettier的问题在于:由于所有这些换行符,你的屏幕上可能只能容纳四个元素!虽然对于这四个元素来说,每个属性本身都非常易读,但是这对于整体结构的可读性来说代价太大了!
如果你对超过这四个元素感兴趣,你将不得不频繁滚动屏幕,这可能非常令人沮丧。对我来说,使用Prettier格式化的HTML(尤其是他们荒谬的推荐行长只有80个字符)非常难以阅读和理解。
大多数其他格式化程序会以不同的方式处理(或让您选择),并且仅在必要时拆分行,因此您只有两行而不是八行。所有内容仍然可见,无需水平滚动(我认为我们都同意这是可怕的,必须避免)。更好的是:一个明智的开发人员可以考虑在什么上下文中阅读什么重要,并提出一个保持相关内容在一行上的解决方案(例如,Angular属性和指令始终在第一行等)。<div *ngIf="ability?.length > 0 && ! loading" myCustomDirective
class="col-lg responsive-input-wrapper d-flex align-items-center"
tabindex="0" role="navigation" aria-label="Primary">
我认为需要同时使用ESLint和Prettier,但在某些情况下,可以考虑不使用EditorConfig。
如果您已经设置了编辑器以使用prettier自动格式化代码,则prettier和EditorConfig之间唯一的区别是它们使用的规则。
例如,Prettier可能无法在某些情况下删除尾随空格,或者它可能具有无法更改的默认规则。
但是,如果您满意Prettier的规则,并且您的编辑器支持使用Prettier进行自动格式化,那么可以删除EditorConfig。
这是来自KevinBrownTech的更清晰的回答 from KevinBrownTech。
例如,当您使用Visual Studio Code prettier扩展时,它会在保存时格式化。 它不会在您输入时进行格式化以匹配您的Prettier样式。 例如,我使用制表符,如果没有EditorConfig,Visual Studio Code默认为空格,直到我保存,然后它将运行Prettier。
总之,.editorconfig的作用是配置您的编辑器,使您编写的代码已经格式化,而Prettier将格式化您已经编写的代码,ESLint确保您的代码符合其配置中设置的最佳实践或规则。
printWidth
:https://prettier.io/docs/en/options.html#print-width - Incinerator