Как заставить jscodeshift/recast сохранять запятые в выражениях объектов?

Я писал некоторые преобразования, чтобы помочь мне реорганизовать кодовую базу. В основном я добавляю новое свойство к некоторым объектным выражениям. Почему jscodeshift/recast удалить запятые из этих объектов? Как я могу предотвратить это?

1 ответ

Решение

У Recast есть опция запятой:

// If you want to print trailing commas in object literals,
// array expressions, functions calls and function definitions pass true
// for this option.
trailingComma: false,

Вы можете передать параметры распечатки в jscodeshift для toSource метод, как описано здесь:

return x.toSource({trailingComma: true});

Теперь, когда проблема в комментариях ниже была объединена, вы также можете использовать ее для большей детализации:

trailingComma: {
    objects: true,
    arrays: true,
    functions: false,
}

Почему jscodeshift/recast удаляет запятые с этих объектов?

Recast не может удалить то, что не существует. Recast работает на AST кода. Пунктуаторы, такие как запятая для разделения свойств, не существует в AST.

Другие вопросы по тегам