Форматирование массива объектов JS

#javascript #code-formatting #js-beautify

#javascript #форматирование кода #js-украсить

Вопрос:

Я пытаюсь настроить пользовательский форматировщик, используя js-beautify пакет node, но я сталкиваюсь с проблемой при форматировании массива объектов. Я хочу, чтобы мой вывод выглядел следующим образом:

 {
  someFunction: function() {

  },

  arr: [{
    thing: 1
  }, {
    one: 2
  }]
}
  

Вы заметите, что мои фигурные скобки находятся на той же строке, что и другая фигурная скобка. Однако я заметил, что если мой код содержит подобный формат, он форматируется неправильно:

 // Formatted input
{
    someFunction: function() {

    },

    arr: [{
        thing: 1
    },
     {
        one: 2
    }]
}

// Formatted output
{
    someFunction: function() {

    },

    arr: [{
            thing: 1
        },
        {
            one: 2
        }
    ]
}
  

Я думал, "brace_style": "end-expand" это будет то, что я хотел, но, похоже, в данном случае это не сработает. Это странно, потому что, если бы у меня было что-то вроде приведенного ниже, это было бы правильно отформатировано в онлайн-программе для улучшения:

 {
    someFunction: function() {

    },

    arr: [{
        thing: 1
    },     {
        one: 2
    }]
}
  

У кого-нибудь есть какие-либо предложения, как получить желаемый результат? Я предполагаю, что есть какое-то свойство конфигурации, которое я могу установить. Кроме того, если у кого-то есть лучший пакет node или средство форматирования, я бы тоже заинтересовался этим.

РЕДАКТИРОВАТЬ Исходя из первого предложения Аднана Шарифа, похоже, что "preserve_newlines": true это причина, по которой это происходит, но если я удалю это, то потеряю все свои новые строки… это кажется немного тревожным, если я не могу сохранить все свои новые строки из-за форматирования в фигурных скобках.

Ответ №1:

Я вставил вашу строку JSON с параметрами JSON —

 {
  "indent_size": "2",
  "indent_char": " ",
  "max_preserve_newlines": "-1",
  "preserve_newlines": false,
  "keep_array_indentation": false,
  "break_chained_methods": false,
  "indent_scripts": "keep",
  "brace_style": "collapse",
  "space_before_conditional": false,
  "unescape_strings": false,
  "jslint_happy": false,
  "end_with_newline": false,
  "wrap_line_length": "0",
  "indent_inner_html": false,
  "comma_first": false,
  "e4x": false,
  "indent_empty_lines": false
}
  

Все работает так, как вы сказали!

Вы можете попробовать настроить вышеуказанные настройки в соответствии с вашими потребностями. Спасибо!

Комментарии:

1. Похоже, моя проблема связана со свойством "preserve_newlines": true , и если я переключу это значение на false, да, это работает, но тогда я потеряю все свои новые строки…