如何强制 jscodeshift/recast 在对象表达式中保留尾随逗号?

How to force jscodeshift/recast to keep trailing commas in object expressions?

我一直在编写一些转换来帮助我重构代码库。我所做的基本上是向某些对象表达式添加一个新的 属性 。为什么 jscodeshift/recast 从这些对象中删除尾随逗号?我怎样才能防止这种情况发生?

Recast 有 trailing comma option:

// 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 方法 as explained here:

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

既然下面评论中的问题已经合并,您也可以这样使用它以获得更细粒度:

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

Why does jscodeshift/recast remove trailing commas from those objects?

重铸无法移除不存在的东西。 Recast 对代码的 AST 进行操作。 AST 中不存在用于分隔属性的逗号等标点符号。