如何在.editorconfig中为不同操作系统分别配置end_of_line
.editorconfig 跨操作系统 end_of_line 配置解决方案
end_of_line 参数不支持设置为auto实现自动适配,EditorConfig 原生提供了条件匹配能力,不需要自定义判断逻辑,有两种成熟方案可以实现Windows、Ubuntu双环境构建正常通过。
方案1:按操作系统分别匹配行尾规则
利用EditorConfig原生支持的操作系统过滤语法,针对不同系统覆盖行尾配置,配置示例如下:
root = true # 全局通用配置 [*] charset = utf-8 indent_style = space indent_size = 2 insert_final_newline = true end_of_line = lf # 仅Windows环境下生效的规则,覆盖行尾为crlf [*{os: windows}] end_of_line = crlf
注意:该系统匹配语法要求项目使用的EditorConfig校验工具依赖的EditorConfig Core版本≥0.12.0,目前主流代码校验工具(ESLint、Prettier、各语言官方格式化插件等)近3年的版本均已支持该特性,无需额外升级依赖。
该方案的缺点是不同系统开发人员提交代码时,容易因为行尾差异产生无意义的文件diff,后续排查问题会受干扰。
方案2(推荐):全项目统一行尾为LF
这是目前业界跨平台项目的通用做法,一劳永逸解决行尾兼容问题,不需要针对不同系统做特殊配置:
- 第一步:在
.editorconfig中全局固定配置root = true [*] charset = utf-8 indent_style = space indent_size = 2 insert_final_newline = true end_of_line = lf - 第二步:在项目根目录新建
.gitattributes文件,添加如下配置,强制Git在所有操作系统下都将文件以LF格式落盘,避免Windows环境下Git自动把行尾转为CRLF:* text=auto eol=lf - 第三步:如果是Windows本地开发环境,主流编辑器(VS Code、JetBrains全系列、Visual Studio等)均原生支持LF行尾格式,编辑、运行代码不会出现异常。
常见问题说明
end_of_line没有auto合法取值,该参数官方规范仅支持lf、crlf、cr三个可选值,填写auto会被判定为非法配置,部分校验工具会直接抛错。- 不需要自行编写脚本、构建逻辑做条件判断,EditorConfig原生的条件匹配规则已经足够覆盖跨系统场景。
内容的提问来源于stack exchange,提问作者Abhishek
相关产品推荐
相关产品推荐

