这个换行符,还在困惑吗?

why?

最近在开源的相关代码,因为现在主要使用 Window 系统,而 WSL2 子系统在使用 Cypress 等需要原生系统支持之后,就逐步在使用 Window,下面是看到源码的时候的情况,ESlint 报告了无数的错误:

🙂🙂🙂 ESLint 报错如下:Expected linebreaks to be 'LF' but found 'CRLF'.eslint linebreak-style

这可能是个普遍的问题,需要一些解决方案:

  • 使用 Linux/MacOS 编程,直接与服务端环境基本一致。
  • 找到原理,解决问题(更多可能这个问题已经解决了,你需要只是发现,然后自己修复,下面就是发现和修复的过程,可以让部分读者少走弯路)

换行符种类,一个表格总结:

换行符类型 含义和用途 ASCII 值 常见操作系统 换行字符真实字符
LF Line Feed(换行) 10 Unix、Linux、macOS \n
CRLF Carriage Return(回车) + Line Feed(换行) 13 + 10 Windows \r\n

eslint 中处理换行符

linebreak-style 配置项目

  • es报错根源配置项目
ts 复制代码
// 使用字符串或数字
/*eslint linebreak-style: ["error", "unix"]*/
/*eslint linebreak-style: ["error", "windows"]*/
"linebreak-style": [
    2,  // 改为 1
    "unix"
]
  • 关闭 eslint 的报错或者警告配置
ts 复制代码
"linebreak-style": [
    0,
    "unix"
],

Editorconfig

editorconfig 官方地址

使用 editorconfig 统一我们在编码时候的换行符

sh 复制代码
# 针对所有文件
[*] end_of_line = lf

# 正对 js 文件
[*.js] end_of_line = lf

使用 vscode 插件创建 .editorconfig 文件。

vscode 中的换行符

注意:这是 vscode 插件,其他的编辑器可能已经了内置方案

VS Code 插件

VS Code 中切换换行符

  • 使用命令

Ctrl + Shift + P 输入:Change End of Line Sequence 选择:lf 或者 crlf

  • 切换图标

在 VS Code 状态栏中,提供了 Select End of Line Sequence 项目

git 中配置换行符

gitattributes 文件

当执行 git 相关命令时,.gitattributes 文件允许你指定由 git 使用的文件和路径的属性,例如:git commit 等。属性中包含一个 *eol*(end of line) 用来处理 git 中换行符。

换句话说,每当有文件保存或者创建时,git 会根据指定的属性来自动地保存。

在当前目中的根目录中添加: .gitattributes 文件,并配置:

arduino 复制代码
* text=auto eol=lf

更多:gitattributes 官方详解

解决之后

清爽如初,同时也自动添加了👇的箭头,表示是 \n 字符。

小结

本文从实际问题 eslint 报告不同编程环境换行符的错误实际出发,探索换行符,以 VSCode 编辑器为示例,讲解了换行符号的基础知识点。以及esline 相关配置,使用 editorconfig 来统一编辑器换行符,已经在 vscode 中使用 插件配置和切换换行符,最后解决通过 gitattributes 来解决 git 中的换行问题。

相关推荐
AI多Agent协作实战派4 小时前
AI多Agent协作系统实战(二十三):Agent读HEARTBEAT.md不读AGENTS.md——openclaw的文件加载之谜
前端·数据库·人工智能·uni-app
2601_955760075 小时前
如何用 Claude Opus 5 API 批量扩展长尾关键词和文章选题
前端·python·搜索引擎
KaMeidebaby5 小时前
卡梅德生物技术快报|bli亲和力检测gst:告别批量跑胶:BLI实时酶切监测技术加速GST融合蛋白下游流程优化
前端·网络·数据库·人工智能·算法
程序员cxuan6 小时前
Loop 还没玩明白,Graph Engineering 又火了。
人工智能·后端·程序员
触底反弹6 小时前
🚀 删了数据刷新又回来?3 组件 × 4 回调 × 3 坑讲透 React 父子通信
前端·javascript·react.js
uzong6 小时前
把一面面试总结做成一个 Skill:重复的事,就别每次都重写
后端·面试
耳东小鹿7 小时前
对象常用方法
前端
程序员海军7 小时前
一个 AI 应用开发程序员的一天,都在屏幕前忙些什么?
前端·后端·程序员
不能放弃治疗7 小时前
MCP
后端
程序员黑豆7 小时前
鸿蒙应用开发:Stack堆叠组件实战——实现微信消息角标效果
前端·harmonyos