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

自定义typescript-eslint规则修复器:如何移除节点及后续换行?

解决ESLint自定义规则中移除ImportDeclaration后残留空行的优雅方案
  • 借助ESLint的SourceCode工具精准处理后续内容
    不要手动硬编码字符偏移,而是利用ESLint提供的SourceCode对象来识别节点后的换行或空白。通过getSourceCode()获取源码实例后,用getTokenAfter获取节点后的第一个token,判断是否为换行符,再动态调整移除范围:

    const sourceCode = context.getSourceCode();
    const nextToken = sourceCode.getTokenAfter(node);
    // 若后续是换行符,则连换行一起移除,否则只移除节点本身
    const end = nextToken?.type === 'Line' ? nextToken.range[1] : node.range[1];
    return fixer.removeRange([node.range[0], end]);
    

    这种方式自动适配“有无换行”的场景,无需额外的复杂判断。

  • 彻底移除后续空白的进阶处理
    如果要处理节点后存在多个换行或空白的情况,可以获取下一个有效代码节点的起始位置,将当前节点到该位置的所有内容全部移除:

    const sourceCode = context.getSourceCode();
    const nextValidNode = sourceCode.getNextToken(node, { includeComments: false });
    const end = nextValidNode ? nextValidNode.range[0] : node.range[1];
    return fixer.removeRange([node.range[0], end]);
    

    这样能确保移除ImportDeclaration后,不会留下任何多余的空白或空行,适配更多格式场景。

  • 核心原则:依赖ESLint的语法分析能力
    避免手动计算字符偏移量,ESLint已经对AST和token做了完整解析,基于这些解析结果处理移除范围,代码会更健壮,也能适配不同的代码格式规范。

内容的提问来源于stack exchange,提问作者Alexey Romanov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 19:59:54