如何配置.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ᴀᴛ
相关产品推荐
相关产品推荐

