比 Babel 快4~20x 的现代 JS 编译器Sucrase
今天给大家带来的主题是比 Babel 快4~20倍的现代 JS 编译器,即Sucrase。话不多说,直接开始!
1.什么是 Sucrase
Sucrase 发音为/['su??kre?s]/, 是 Babel 的替代品,它支持超快速的 JavaScript/TypeScript 开发阶段构建。 Sucrase 没有编译大量的 JS 特性以使代码能在 Internet Explorer 等低端浏览器中运行,而是假定开发者正在使用最新版本的浏览器或最新的 Node.js 进行开发,因此 Sucrase 专注于编译非标准语言扩展:JSX、TypeScript 和 Flow 等。
由于范围更小,Sucrase 可以利用性能更高的编译器体系结构,尽管其可扩展性和可维护性较差。 Sucrase 的解析器是从 Babel 的解析器派生出来的(Sucras 受到 Babel 启发,没有它就不可能实现)并将其精简为 Babel 解决的重点子集。
在 Github 上,Sucrase 目前已经有超过 5.1k 的 star 和 100+ 的 fork,每周的平均下载量达到了 987k。目前有超过 285k 的项目使用 Sucrase、项目贡献人数也达到了 50+。从 Sucrase 的 star 增长趋势来看,Sucrase 也在逐渐被大家所熟知。
2.Sucrase 配置详解
Sucrase 中的主要配置选项是转换名称数组。 这些转换可用:
jsx:将 JSX 语法转换为 React.createElement,例如
变成 React.createElement('div', {a: b})。 行为类似于 Babel 7 的 React 预设 preset,包括:添加 createReactClass display names 和 JSX 上下文信息。
typescript:将 TypeScript 代码编译为 JavaScript,删除类型注释并处理枚举等功能,但是不包含类型检查(Check Types)。 Sucrase 独立转换每个文件,因此开发者可以启用 isolatedModules TypeScript 标志,以便类型检查器禁止少数需要跨文件编译的功能,例如 const 枚举。
flow:删除 Flow 类型注释,但是不检查类型。
imports:使用...
点击查看剩余70%
网友评论