如何配置js-beautify保留对象数组的指定格式?
解决js-beautify数组对象大括号位置问题
你想要保留数组内对象的特定格式,同时不放弃自动缩进修复功能,这可以通过调整js-beautify的几个配置项来实现,不用禁用keep_array_indentation。
场景1:保持数组内容单行(匹配你给出的示例格式)
如果你希望输出和示例完全一致的单行格式:"structure": [ { "name": ... }, { ... }, ],可以用以下配置:
{ "keep_array_indentation": true, "wrap_line_length": 0, "space_in_paren": true, "preserve_newlines": false }
wrap_line_length: 0:关闭基于字符长度的自动换行,确保整个数组内容保持在同一行。space_in_paren: true:强制在数组括号[]和对象括号{}内部添加空格,保证[和{之间有空格,符合你的格式要求。keep_array_indentation: true:保留数组元素的缩进逻辑,依然能修复其他地方的缩进错误。
场景2:数组元素多行展示(更易读的常见格式)
如果你的实际需求是每个对象单独占一行,但不想让第一个对象的{和数组[挤在同一行,可以调整brace_style选项:
{ "keep_array_indentation": true, "brace_style": "expand", "indent_size": 2, "space_in_paren": true }
这个配置会输出如下格式(如果希望对象属性也换行,只需保留默认的preserve_newlines: true即可):
"structure": [ { "name": "heading", "text": "", "default": "", "type": "string" }, { "name": "flickr-album-id", "text": "", "type": "string" }, ]
为什么之前会出现问题
默认情况下,js-beautify的brace_style为"collapse",会自动把数组内第一个对象的{和[放在同一行;如果wrap_line_length设置得较小,还会自动拆分数组元素换行,导致格式不符合预期。通过上述配置,你可以精准控制大括号的位置和换行逻辑,同时保留缩进修复的功能。
内容的提问来源于stack exchange,提问作者Lukas E.
相关产品推荐
相关产品推荐

