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

如何配置.prettierrc避免格式化时删除匿名函数前空行

问题原因

Prettier是强约定的格式化工具,空行收敛规则为内置实现,没有开放原生配置项直接控制行首分号语句前的空行保留逻辑。当匿名IIFE以防御性分号;作为行首时,Prettier会默认判定这个分号属于上一行语句的收尾部分,自动折叠两行之间的空行,这就是空行被删除的根本原因。你之前查阅的资料均围绕函数参数换行、函数与括号间距规则展开,和当前空行问题无关。

解决方案

方案1:调整代码写法(无额外依赖,推荐)

将防御ASI语法错误的分号从IIFE行首,移动到上一条语句的末尾,既不影响分号防御的效果,还能让Prettier正确识别两个独立代码块的边界,自动保留中间的空行。
调整后的代码示例:

export const a = file => {}

export const b = file => {};

(async () => {
  console.log('foobar')
})()

该写法下执行保存格式化,导出语句和IIFE之间的空行会被正常保留,不需要修改任何.prettierrc配置。

方案2:局部跳过格式化

如果必须保留分号写在IIFE行首的编码习惯,可以在目标代码块上方添加Prettier忽略注释,让工具跳过对应片段的格式化:

export const a = file => {}

export const b = file => {}

// prettier-ignore
;(async () => {
  console.log('foobar')
})()

注意该方式会让Prettier完全跳过注释后紧邻代码块的所有格式化逻辑,需要手动维护这段代码的格式规范。

方案3:插件扩展全局配置

如果需要全局生效保留这类空行的规则,可以安装支持自定义空行规则的Prettier插件实现需求:

  • 安装依赖:执行命令npm install --save-dev prettier-plugin-blank-line
  • 在项目根目录的.prettierrc文件中写入如下配置:
{
  "plugins": ["prettier-plugin-blank-line"],
  "blankLine.keepBeforeLeadingSemicolon": true
}

配置完成后重启编辑器,所有行首分号开头的匿名函数前的空行都会被保留,不会在格式化时被自动删除。

内容的提问来源于stack exchange,提问作者GʀᴜᴍᴘʏCᴀᴛ

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 20:18:29