Please enable Javascript to view the contents

EditorConfig

 ·  ☕ 4 分钟

editorconfig-logo.png

什么是 EditorConfig?

在团队开发中,统一的代码格式是必要的。但是不同开发人员的代码风格不同,代码编辑工具的默认格式也不相同,这样就造成代码的differ。而 editorConfig 可以帮助开发人员在不同的编辑器和IDE中定义和维护一致的编码风格

  • 使用 EditorConfig 的项目包括一个用于定义代码格式的 .editorconfig 文件
  • 和 一个可选的 EditorConfig 插件集合,这些 EditorConfig 插件使编辑器可以读取 .editorconfig 文件,并使代码遵循文件中定义的格式。

概述

.editorconfig 文件用来定义项目的编码规范,编辑器的行为会与 .editorconfig 文件中定义的一致,并且其 优先级比编辑器自身的设置要高 ,这在多人合作开发项目时十分有用而且必要。

有些编辑器默认支持 editorConfig,如webstorm;而有些编辑器则需要安装editorConfig插件,如 ATOM、Sublime、VS Code 等。

当打开一个文件时,EditorConfig 插件会在打开文件的目录和其每一级父目录查找 .editorconfig 文件,直到有一个配置文件 root=true

EditorConfig 的配置文件是从上往下读取的并且最近的 EditorConfig 配置文件会被最先读取,匹配 EditorConfig 配置文件中的配置项会按照读取顺序被应用, 所以最近的配置文件中的配置项拥有优先权。

如果 .editorconfig 文件没有进行某些配置,则使用编辑器默认的设置。

文件语法

editorConfig配置文件需要是UTF-8字符集编码的, 以回车换行或换行作为一行的分隔符

斜线(/)被用作为一个路径分隔符,井号(#)或分号(;)被用作于单行注释.。

通配符:

*                匹配除/之外的任意字符串
**               匹配任意字符串
?                匹配任意单个字符
[name]           匹配name中的任意一个单一字符
[!name]          匹配不存在name中的任意一个单一字符
{s1,s2,s3}       匹配给定的字符串中的任意一个(用逗号分隔) 
{num1..num2}    匹配num1到num2之间的任意一个整数, 这里的num1和num2可以为正整数也可以为负整数

属性:

所有的属性和值都是忽略大小写的. 解析时它们都是小写的

indent_style    设置缩进风格(tab是硬缩进,space为软缩进)
indent_size     用一个整数定义的列数来设置缩进的宽度,如果indent_style为tab,则此属性默认为tab_width
tab_width       用一个整数来设置tab缩进的列数。默认是indent_size
end_of_line     设置换行符,值为lf、cr和crlf
charset         设置编码,值为latin1、utf-8、utf-8-bom、utf-16be和utf-16le,不建议使用utf-8-bom
trim_trailing_whitespace  设为true表示会去除换行行首的任意空白字符。
insert_final_newline      设为true表示使文件以一个空白行结尾
root           表示是最顶层的配置文件,发现设为true时,才会停止查找.editorconfig文件

示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# EditorConfig is awesome: https://EditorConfig.org

# top-most EditorConfig file 
# 表示是最顶层的配置文件,设为true时,才会停止查找.editorconfig文件
root = true

# Unix-style newlines with a newline ending every file 
# 对于所有的文件  始终在文件末尾插入一个新行
[*]
end_of_line = lf
insert_final_newline = true

# Matches multiple files with brace expansion notation
# Set default charset  对于所有的js , py文件,设置文件字符集为utf-8
[*.{js,py}]
charset = utf-8

# 4 space indentation 
# 控制py文件类型的缩进大小
[*.py]
indent_style = space
indent_size = 4

# Tab indentation (no size specified) 
# 设置某中文件的缩进风格为tab Makefile未指明
[Makefile]
indent_style = tab

# Indentation override for all JS under lib directory  
# 设置在lib目录下所有JS的缩进为
[lib/**.js]
indent_style = space
indent_size = 2

# Matches the exact files either package.json or .travis.yml 
# 设置确切文件 package.json/.travis/.yml的缩进类型
[{package.json,.travis.yml}]
indent_style = space
indent_size = 2

控制指定文件类型的缩进大小:

1
2
3
[{*.json,*.yml}]
indent_style = space
indent_size = 2

比如:对于.json .yml 文件,使用空格替代tab,并且一个tab会被替换为2个空格。

始终在文件末尾插入一个新行:

1
2
3
[*]
end_of_line = lf
insert_final_newline = true

对于所有的文件

  • 每一行的尾部自动调整为 lf
  • 文件的末尾添加一个空行

vscode中使用editorconfig

vscode 中 editorconfig 插件 支持的属性有:

  • indent_style
  • indent_size
  • tab_width
  • end_of_line (on save)
  • insert_final_newline (on save)
  • trim_trailing_whitespace (on save)
  • charset (正在实现当中)

注意:有些设置只能在文件保存时应用,如上所示。

创建一个新的 .editorconfig 文件,方法是右键单击所需文件夹并选择 Generate .editorconfig

注意事项

EditorConfig 和 Prettier 一样,都是用来配置格式化你的代码的。

如果你同时使用了 linter (代码校验工具),则确保 linter 中的对应配置与 EditorConfig 和 Prettier 中的配置相符 ,否则会出现你格式化代码以后,却不能通过你的代码校验工具的检验。

请注意在 vscode 中 Prettier 读取其配置的优先级为:

  • Prettier configuration file (Prettier 自己的配置文件)
  • .editorconfig (EditorConfig配置文件)
  • Visual Studio Code Settings (编辑器或IDE的配置)

参考

EditorConfig

EditorConfig for VS Code - Visual Studio Marketplace

统一代码风格工具 — editorConfig

您的鼓励是我最大的动力
alipay QR Code

Felix
作者
Felix
如无必要,勿增实体。

3

目录