EditorConfig 介绍

Editorcofig logo

当多人共同开发一个项目的时候,往往会出现大家用不同编辑器的情况。就前端开发者来说,有人喜欢 Sublime,有人喜欢 Webstorm , 也有人喜欢 Atom,还有人喜欢 Vim,HBuilder 等等。各种不同编程语言的开发者喜欢各种不同的编辑器。

问题来了,如何让使用不同编辑器的开发者在共同开发一个项目时“无痛”地遵循编码规范(编码风格)?

我们来先看看,我们有一些可以部分的解决上面的问题的做法:

  • 对编辑器进行设置。比如,项目中的编码规范是:代码缩进用空格;缩进两个空格。对于 sublime 来说,我们只需做如下设置:
"tab_size": 2,
"translate_tabs_to_spaces": true// 将 Tab 转化成空格

但可能出现的问题是:如果某开发者如果在同时开发两个项目,不幸的是,这两个项目的编码规范有冲突(比如,一个是缩进两个空格,另一个是缩进四个空格)怎么办?还有,如果该项目的某些编码规范编辑器设置不支持(比如,对 JS 文件要缩进两个空格;对 CSS 文件要缩进四个空格)怎么办?还有,不同编辑器设置各不相同等等。

  • 每次代码提交前,使用 ESLint 之类的一系列工具对代码进行编码规范的验证。修改不符合编码规范的代码直至满足规范为止。好吧,对于编辑器的设置与编码规范有冲突的情况,程序员就不得不苦逼的改改改。

EditorConfig 能很好的“无痛”地解决上面问题。下面我就来介绍使用 EditorConfig 来解决上面的问题。只需两步~

  1. 在项目根创建一个名为 .editorconfig 的文件。该文件的内容定义该项目的编码规范。EditorConfig 支持的编码规范在后文会有详细的介绍。
  2. 安装与编辑器对应的 EditorConfig 插件。

其工作原理是:当你在编码时,EditorConfig 插件会去查找当前编辑文件的所在文件夹或其上级文件夹中是否有 .editorconfig 文件。如果有,则编辑器的行为会与 .editorconfig 文件中定义的一致,并且其优先级高于编辑器自身的设置。

EditorConfig 支持的常用的编码规范,如下

  • 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
  • trim_trailing_whitespace:是否删除行尾的空格。可选值
    • true
    • false

完整版见这里

可见 EditorConfig 能设置的编码规范不多,但也基本够用。EditorConfig 和 ESLint 之类的编码规范验证工具一起使用是不错的选择。

最后附上我的 .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

本文遵守创作共享CC BY-NC-SA 4.0协议 网络平台如需转载必须与本人联系确认。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • CSS hack总结

    有时,我们为了让一些外观在不同浏览器中做保持一致。就不得不用css hack。下面是常用的css hack。

    Joel
  • 用10只老鼠找出1千瓶水中的1瓶毒药(附 JS 实现)

    条件:现在有1千瓶水,其中有1瓶是毒药。不能通过外观和气味等外在特征来区分毒药和水。老鼠吃了毒药或毒药和水的混合体后,1周会死亡。

    Joel
  • nodejs概要

    nodejs是由Ryan Dahl写的。他做nodejs的初衷是为了做一个高性能是web服务器。 为了实现高性能服务器,实现要点是:

    Joel
  • 七天学会ASP.NET MVC (五)——Layout页面使用和用户角色管理

    系列文章 七天学会ASP.NET MVC (一)——深入理解ASP.NET MVC 七天学会ASP.NET MVC (二)——ASP.NET MVC 数据传递 ...

    葡萄城控件
  • Java 开发中如何正确的踩坑

    我们的做法是,要用最好的人。我一直都认为研发本身是很有创造性的,如果人不放松,或不够聪明,都很难做得好。你要找到最好的人,一个好的工程师不是顶10个,是顶100...

    好好学java
  • 比较全的使用JavaScript获取当前网页运行环境的明细,比如操作系统类型,设备类型

    Jerry Wang
  • element 嵌套数据合并单元格两种处理方法

    通过table传入span-method方法可以实现合并行或列,方法的参数是一个对象,里面是{row, column, rowIndex, columnInde...

    tianyawhl
  • Python花式编程案例锦集(1)

    首先解答上一篇文章详解Python中的序列解包(2)中最后的习题,该题答案为5,表达式功能为迭代求解序列中元素的最大值。 -----------------分割...

    Python小屋屋主
  • 在 Kubernetes 中实现零宕机部署应用

    如果你使用像 Gmail 这样的在线服务或者大型社交媒介和电子商务平台,你可能从来都没有遇到过哪个页面会提示你“请等待我们的应用更新完成”。

    米开朗基杨
  • python 内置函数

    基本的数据操作基本都是一些数学运算(当然除了加减乘除)、逻辑操作、集合操作、基本IO操作,然后就是对于语言自身的反射操作,还有就是字符串操作。

    py3study

扫码关注云+社区

领取腾讯云代金券