.editorconfig 文件使用说明

12 篇文章 0 订阅
2 篇文章 0 订阅

在多人开发的项目中,不能保证团队成员都使用相同的编辑器,不同的编辑器之间的格式设置各不相同,无法保证项目代码格式的统一,往往会出现意想不到的问题。

比如编辑器中一个制表符等于的空格数的大小(即缩进大小),各编辑器中及各个开发人员设置的大小是不一致的。如何保证团队代码在多人协同开发时,编辑器格式不一的情况下仍然保证相同的代码格式呢?这就是EditorConfig 要做的事情。

Editorconfig是什么 ?
EditorConfig 有助于为跨各种编辑器和 IDE 处理同一项目的多个开发人员维护一致的编码风格。EditorConfig 项目由用于定义编码样式的文件格式和一组文本编辑器插件组成,这些插件使编辑器能够读取文件格式并遵循定义的样式。

 EditorConfig 组成:

1,EditorConfig插件:

 EditorConfig 插件并不是所有的编辑器都默认支持的,需要自行安装。

2,.editorconfig 自定义文件 

 .editorconfig 自定义文件是用来定义编辑器的编码格式规范,编辑器的行为会与 .editorconfig 文件中定义的一致,并且其优先级比编辑器自身的设置要高。

EditorConfig 插件会读取 .editorconfig 文件中定义的内容,应用于编辑器。

所以 EditorConfig 是用来帮助我们在不同的编辑器中保持编码风格的统一的。

.Editorconfig文件格式
EditorConfig 文件采用类似 INI 的文件格式。在 EditorConfig 文件中,每行上的所有开头空格都被认为是不相关的。每行必须是以下之一:

  • 空白
  • 注释 -- 使用八字 ( #) 或分号 ( ;) 进行注释
  • 部分标题
  • 键值对 -- 包含一个键和一个值,用=分隔。

EditorConfig 文件应该是 UTF-8 编码的,带有 LF 或 CRLF 行分隔符。

EditorConfig 文件从上到下读取,最先发现的规则优先。 

Editorconfig通配符

EditorConfig 通过以下通配符来匹配特殊文件:

特殊的角色    匹配
*    任何字符串,路径分隔符 ( /)除外
**    任何字符串
?    任何单个字符,路径分隔符 ( /)除外
[name]    匹配名称中的任何单个字符
[!name]    匹配名称中没有的任何单个字符
{s1,s2,s3}    匹配任何给定的字符串(以逗号分隔,可以嵌套)
{num1..num2}    num1和之间的任何整数num2,其中num1和num2 可以是正数或负数

匹配到的不同的文件类型,可以定义不同的格式化属性。

特殊字符可以用反斜杠转义,这样它们就不会被解释为通配符模式。

支持的属性

# 表示是最顶层的配置文件,发现值为true时,才会停止查找.editorconfig文件
root
 
# 设置使用那种缩进风格(tab是制表符,space是空格)
indent_style
 
# 定义用于每个缩进级别的空格数
indent_size
 
# 用一个整数来设置tab缩进的列数。
tab_width
 
# 设置换行符,值为lf、cr和crlf
end_of_line
 
# 设置编码格式,值为latin1、utf-8、utf-8-bom、utf-16be和utf-16le
charset
 
# 设置为true则删除换行符之前的任何空白字符
# 设置为true会删除每一行后的任何空格  ***
trim_trailing_whitespace
 
# 设置为true以确保文件在保存时以换行符结尾
# 如果设置为true,则文件最后一行也会确保以换行符结尾,会强制换行到下一行  ***
insert_final_newline

所有的属性和值都不区分大小写。解析时它们是小写的。一般情况下,如果没有指定属性,将使用编辑器设置。

对于任何属性,将其值设为 unset 来删除之前的定义,例如,添加indent_size = unset来取消对indent_size的定义。

indent_size 与 tab_width 的区别:

如果indent_style 的值为 tab,缩进的长度优先取tab_width设置的值, 如果没有tab_width, 则取indent_size的值,如果值为 space,缩进的长度优先取indent_size的值,如果没有indent_size,则取tab_width的值。

editorConfig 功能:

1,控制编辑器的缩进样式,即使用那种方式缩进,空格还是制表符

2,控制制表符缩进的大小(宽度),即一个制表符等于的空格数

其他相关的格式化工具会根据 .editorconfig 文件的设置来格式化代码,因为 editorconfig 的设置会覆盖编辑器设置。

不知道有没有注意到无论 indent_style 的值取 tab 或者 space ,当 indent_size 的值与 tab_width 的值相同时,取值为 tab 或者 space ,样式是相同的,那么 tab ,space存在的意义何在呢?

使用space可以提高代码的压缩率,因为现在的前端项目都在追寻最大的压缩率以减少文件传输占用的带宽,根据压缩原则,信息熵越大的压缩率越低。很明显,当取值为tab的时候,文件中大概率同时存在制表符和空格;而取值为space,文件就只存在空格了,所以space的信息熵就越低,压缩率就越高。
使用EditorConfig
安装插件
如果使用 VS Code 开发,vscode默认不支持 EditorConfig,需要自行安装。

在编辑器扩展商店中搜索 EditorConfig 即 EditorConfig for VS Code。

 配置文件
需要定义一个名为 .editorconfig 的文件,可以在该文件中配置想要的属性。

使用
 打开项目时,EditorConfig 插件会在打开文件的目录和每个父目录中查找 .editorconfig 文件,如果到达根文件路径或EditorConfig 文件root = true,则文件搜索将停止。

EditorConfig 文件从上到下读取,最先发现的规则优先。

当配置好了需要的文件或者编辑器格式,就可以正常进行开发使用了。

实例

# 顶部的EditorConfig文件
root = true
 
# unix风格的换行符,每个文件都以换行符结尾
[*]
end_of_line = lf
insert_final_newline = true
 
# 用大括号展开符号匹配多个文件
# 设置默认字符集
# 设置所有以.js,.py结尾的文件的编码格式
[*.{js,py}]
charset = utf-8
 
# 使用空格缩进,设置4个空格缩进
[*.py]
indent_style = space
indent_size = 4
 
# 使用制表符(tab)缩进
[Makefile]
indent_style = tab
 
# 设置lib目录下的所有JS的缩进风格(使用空格缩进,缩进占用两个空格的位置)
[lib/**.js]
indent_style = space
indent_size = 2
# 匹配确切文件 package.json或.travis.yml
[{package.json,.travis.yml}]
indent_style = space
indent_size = 2


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值