一、简介
在浏览GitHub代码时经常会看到.editorconfig文件,这个文件是起到什么作用的呢?
当多人团队进行一个项目开发时,每个人可能喜欢的编辑器不同,这个时候就需要使得用不同编辑器的开发者能够轻松惬意的遵守最基本的代码规范。
EditorConfig包含一个用于定义代码格式的文件和一批编辑器插件,这些插件是让编辑器读取配置文件并以此来格式化代码。能很好的“无痛”地解决上面问题。下面我就来介绍使用 EditorConfig 来解决上面的问题。
- 在项目根创建一个名为
.editorconfig
的文件。该文件的内容定义该项目的编码规范。EditorConfig 支持的编码规范在后文会有详细的介绍。 - 安装与编辑器对应的 EditorConfig 插件。
其工作原理是:当你在编码时,EditorConfig 插件会去查找当前编辑文件的所在文件夹或其上级文件夹中是否有 .editorconfig
文件。如果有,则编辑器的行为会与 .editorconfig
文件中定义的一致,并且其优先级高于编辑器自身的设置。
二、EditorConfig 支持的常用的编码规范
完整版见https://github.com/editorconfig/editorconfig/wiki/EditorConfig-Properties
- root:是否是顶级配置文件,设置为true的时候才会停止搜索.editorconfig文件
- true
- false
- charset:文件编码格式。可选值
- latin1
- utf-8(一般用这个)
- utf-16be
- utf-16le
- indent_style: 缩进类型。可选值
- space
- tab
- indent_size: 缩进数量。可选值
- 整数(一般设置 2 或 4)
- tab
- insert_final_newline:是否在文件的最后插入一个空行,即是否让文件以空行结束。可选值
- true
- false
- end_of_line:换行符类型格式。说明见Wiki:换行。可选值
- lf(一般用这个)
- crlf
- cr
- max_line_length:最大行宽
- 填写<number>数值
- trim_trailing_whitespace:是否删除行尾的空格。可选值
- true
- false
三、常用文件名匹配
1、* : 匹配除/之外的任意字符
2、**:匹配任意字符串
3、?:匹配任意单个字符
4、[name]:匹配name字符
5、[!name]:不匹配name字符
6、[s1,s2,s3]:匹配给定的字符串
7、[num1..num2]:匹配num1到mun2直接的整数
四、总结
可见 EditorConfig 能设置的编码规范不多,但也基本够用。EditorConfig 和 ESLint 或TSLint之类的编码规范验证工具一起使用是不错的选择。
某个.editorconfig
文件示例
# http://editorconfig.org
root = true
# 对所有文件生效
[*]
charset = utf-8
indent_style = space
indent_size = 2
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
# 对后缀名为 md 的文件生效
[*.md]
trim_trailing_whitespace = false
[References]
EditorConfig官网:https://editorconfig.org