You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 02:51:24