如何配置ESLint规则禁止源码文件以换行空行开头
ESLint 禁止源码文件以换行符开头的配置方案
你判断的没错,padding-line-between-statements 规则的设计目标是控制语句之间的空行,没有提供文件起始(SOF)、文件结束(EOF)位置的配置项,无法直接实现禁止开头换行的需求,可通过以下两种方案实现目标:
方案1:使用社区现成规则(推荐)
使用eslint-plugin-unicorn插件提供的专用规则即可,该规则专门处理文件开头空行场景,开箱即用:
- 先安装依赖:
npm i eslint-plugin-unicorn -D
- 在ESLint配置文件中添加对应配置:
{ "plugins": ["unicorn"], "rules": { "unicorn/no-leading-blank-lines": "error" } }
该规则默认禁止文件开头出现任意数量的空换行,同时支持自动修复,不需要额外传参。
方案2:零依赖自定义本地规则
如果不想引入额外插件,可以写一个仅十余行代码的本地自定义规则,同样支持自动修复:
- 在项目中新建ESLint规则目录(比如
eslint-rules/),新建no-leading-newline.js文件,写入以下规则代码:
module.exports = { meta: { type: "layout", fixable: "whitespace", messages: { leadingNewline: "源码文件禁止以换行符开头" } }, create(context) { return { Program(node) { const sourceCode = context.getSourceCode(); // 取包含注释在内的第一个语法token const firstToken = sourceCode.getFirstToken(node, { includeComments: true }); if (firstToken.loc.start.line > 1) { context.report({ node, loc: { start: { line: 1, column: 0 }, end: firstToken.loc.start }, messageId: "leadingNewline", fix(fixer) { // 自动删除开头所有空行 return fixer.removeRange([0, firstToken.range[0]]); } }); } } } } }
- 在ESLint配置中引入本地规则目录并开启规则:
{ "rulesDirectory": ["./eslint-rules"], "rules": { "no-leading-newline": "error" } }
补充:ESLint内置的
eol-last规则仅能控制文件末尾的换行符,无法处理文件开头的场景,不要误用。
内容的提问来源于stack exchange,提问作者Greener
相关产品推荐
相关产品推荐

