0
const { parse } = require('@babel/parser')
const generator = require('@babel/generator')

const source = `const babel = {
  version() {},
  author: ''
};`

const ast = parse(source)

console.log(generator.default(ast).code === source) // false

console.log(generator.default(ast).code)
/*
const babel = {
  version() {},

  author: ''
};
*/

version函数后面多了一个空格

我稍微修改了版本功能的实现。从以前FunctionExpression到现在ArrowFunctionExpression,结果符合预期。

const { parse } = require('@babel/parser')
const generator = require('@babel/generator')

const source = `const babel = {
  version: () => {},
  author: ''
};`

const ast = parse(source)

console.log(generator.default(ast).code === source) // true

我应该怎么做才能使它们保持一致?

4

1 回答 1

0

Babel 专注于从编程行为的角度对代码进行转换,因此它只需要少量的努力来重现原始格式。鉴于此,这是预期的行为。

在您看到的情况下,您期望的格式似乎与您的 Babel 版本发生的输出不匹配。如果格式很重要,我建议您在prettier之后运行代码以使其格式一致。

于 2021-07-29T16:38:30.047 回答