您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Babel babylon

Babylon 是 中使用的 JavaScript 解析器。

认启用最新的 ECMAScript 版本(ES2017)。

附加注释。

JSX, Flow, Typescript 语法。

实验阶段的语法提案(至少达到 阶段的 PR)。

API

parse() 将提供的 code 解析为完整的 ECMAScript 程序,而 parseExpression() 试图解析表达式,并会考虑问题。如果有疑问,请使用 .parse()。

allowImportExportEverywhere: 认情况下,import 和 export 声明只能出现在头部。设置该选项为 true 时,则允许他们在的任何地方使用。

allowReturnOutsideFunction: 认情况下,顶级的 return 语句会引发。设置该选项为 true 时,则会接受的。

allowSuperOutsideMethod: TODO

sourceType: 表明应该解析的模式。可以是 "script","module" 或者 "unambiguous" 中任意。认为 "script"。"unambiguous" 将使得 Babylon 尝试根据 ES6 的 import 或者 export 声明来进行推测。具有 ES6 import 和 export 的被认为是 "module",否则被认为是 "script"。

sourceFilename: 将的 AST 节点与其源名相关联。多用于多个输入的 AST 和 source map 时。

startLine: 认情况下,解析的第一行被视为第 1 行。你可以提供行号来作为起始。多用于与其他源工具集成。

plugins: 数组,包含要启用的。

strictMode: TODO

ranges: 为每个节点 ranges : [node.start, node.end]

tokens: 将所有解析的 token 到 File 节点的上的 tokens 中。

Babylon 根据 AST 。它基于 ,具有以下差别:

现在可以使用 estree 来取消掉这些差别

符号会被替换为,,,,

符号会被替换为 和

会被替换为

和的 directives 字段中包含额外的和

中的,和值的被强制/带入主节点。

JSX 的 AST 基于 并额外了节点类型:

JSXText

Babylon 在大多数情况下遵循 semver。唯一需要注意的是,某些规范遵从性的修复可能会在下补丁版本中发布。

例如:我们推送了修复早期的,就像 - 多个认导出多个。这被视为进行修复,即时它会导致构建失败。

require("babylon").parse("code", {
  // 以严格模式解析并允许模块声明
  sourceType: "module",

  plugins: [
    // 启用 jsx 和 flow 语法
    "jsx",
    "flow"
  ]});

estree

jsx

flow

doExpressions

objectRestSpread

decorators(基于过时版本的 Decorators 提案。将在 Babylon 的未来版本中。)

classProperties

exportExtensions

asyncGenerators

functionBind

functionSent

dynamicImport

templateInvalidEscapes

鸣谢

该项目中使用了大量的  和  语法,感谢  和  出色的工作。


联系我
置顶