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

时间:2016-10-25 23:26:27

标签: javascript jscodeshift

我一直在编写一些变换来帮助我重构代码库。我正在做的是基本上为一些对象表达式添加一个新属性。为什么jscodeshift/recast从这些对象中删除尾随逗号?我该如何防止这种情况?

1 个答案:

答案 0 :(得分:4)

重播有一个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's toSource方法as explained here

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

现在已经合并了以下评论中的问题,您也可以通过这种方式使用它来获得更多粒度:

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

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

重播不能删除不存在的内容。 Recast对代码的 AST 进行操作。 AST中不存在诸如用于分隔属性的逗号之类的标点符号。