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

Javascript 如何强制jscodeshift/recast在对象表达式中保留尾随逗号?,javascript,jscodeshift,Javascript,Jscodeshift,我一直在写一些转换来帮助我重构代码库。我所做的基本上是向一些对象表达式添加一个新属性。为什么jscodeshift/recast会从这些对象中删除尾随的逗号?我怎样才能防止这种情况发生?重铸有一个: 您可以将重铸打印选项传递给jscodeshift的totoSource方法: 现在,下面评论中的问题已经合并,您也可以这样使用它以获得更高的粒度: trailingComma: { objects: true, arrays: true, functions: false,

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

重铸有一个:

您可以将重铸打印选项传递给jscodeshift的to
toSource
方法:

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

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

为什么jscodeshift/recast会从这些对象中删除尾随的逗号


重铸无法删除不存在的内容。重铸操作在代码的AST上。AST中不存在诸如逗号分隔属性之类的标点符号。

Hmmm这对我很有用,因为我们的样式指南建议在任何地方都使用逗号。但是,如果我需要保持每个对象的原始存在或缺少尾随逗号,该怎么办呢?呃,这个选项也可以在函数调用中启用尾随逗号:(似乎没有禁用函数调用尾随逗号的选项,是吗?不是atm。但您可以在出现问题时提出问题,或者向重铸存储库申请添加:)对于感兴趣的人,以下是我打开的问题:
return x.toSource({trailingComma: true});
trailingComma: {
    objects: true,
    arrays: true,
    functions: false,
}