产品战略专家梁宁确认出席AICon北京站,分享AI时代下的商业逻辑与产品需求 了解详情
写点什么

Babel 7 支持 ES.Next 提案和 TypeScript

  • 2018-11-01
  • 本文字数:1559 字

    阅读完需:约 5 分钟

Babel 7 支持 ES.Next 提案和 TypeScript

Babel 7 带来了很多重大变更和改进,包括对 TypeScript 转换的支持以及更好的用于管理 ES.Next 提案的方法。

Babel 和 TypeScript 团队合作,让 Babel 可以用 @babel/preset-typescript 解析和转换类型语法。Babel 已经可以支持 Flow,Babel 团队的目标是为一些工具提供支持,这些工具可以让 JavaScript 用户利用渐进类型。TypeScript 项目经理 Daniel Rosenwasser 解释了 Babel 和 TypeScript 团队协作的动机和好处:

一年多以前,我们开始寻找用户在使用 TypeScript 时遇到的最大困难,我们发现 Babel 用户面对的一个共同问题是使用 ypeScript 太难了。原因各不相同,但对于很多开发人员来说,重构已经正在运行的构建可能是一项艰巨的任务。

虽然 TypeScript 编译器仍然是构建 TypeScript 的首选方法,Babel 可以处理编译和转换,但 Babel 没有提供内置的类型检查。这种集成可以让 Babel 用户利用 TypeScript 的拼写和错误检查优势。

定义 JavaScript 年度更新的工作组 TC39 创建了很多提案供参考。Babel 7 更改了默认行为,要求用户明确选择加入版本 4 之前的任何特性,以防止用户无意中依赖尚未最终确定的特性。

Babel 支持的 TC39 提案的完整列表可在 babel/proposal 中找到。

使用 Babel 进行配置的重大改进是在版本 7 中完成的,包括引入 babel.config.js。这个新的配置文件是可选的,并不完全是作为.babelrc 的替代,但在某些情况下,例如对于开发和生产环境的不同编译选项,预计会派上用场。

根据 Babel 维护者 Henry Zhu 所述:

*.js 配置文件在 JavaScript 生态系统中相当常见。ESLint 和 Webpack 分别使用.eslintrc.js 和 webpack.config.js 配置文件。

需要注意的是,babel.config.js 的配置方案与.babelrc 是不一样的。新的配置文件总是从文件中解析配置,而.babelrc 将查找每个文件,直到找到配置。这种方式可以利用选择性配置,并进行配置覆盖。

发布 ES2015+ 软件包以及使用和编译这些软件包具有一定的挑战。Babel 现在允许应用程序为测试、客户端源代码和服务器端代码提供不同的编译配置,不再需要为每个目录创建新的.babelrc 文件。

Babel 7 还为缺乏 Promises 和 Symbols 等功能的环境提供实验性的自动 ployfill 支持。Babel 7 不会导入整个 polyfill,而是只导入代码库中使用的 polyfill。

Babel 7 增加了更好的模块定位、用于 Babel 转换的调用者元数据、JSX 支持、babel-upgrade 工具等等。

在升级到 Babel 7 时需要注意几个重大变化:

  • 移除对 Node.js 6 之前版本的支持;
  • 使用带有作用域的 @babel 命名空间,以防止与官方 Babel 包混淆;
  • 移除年度预设,替换为 @babel/preset-env;
  • 使用选择性 TC39 个别提案替换阶段提案;
  • TC39 提议插件现在是 -proposal,而不是 -transform;
  • 为某些面向用户的包(例如 babel-loader、@babel/cli 等)在 @babel/core 中引入
    peerDependency。

在展望 Babel 7 之后的未来时,Zhu 说:

Babel 本质上与它编译的内容联系在一起:即 JavaScript。只要有新的建议,就有工作要做。这包括在语法“稳定”之前用于实现和维护语法的时间和精力。我们关心整个过程:升级路径、新功能培训、标准 / 语言设计、易用性以及与其他项目的集成的宣传。

例如,Babel 团队一直致力于支持修订后的装饰器提案,该提案将包含在7.1 版本中。修订后的提案与之前的提案有很大不同,增加了更多特性。 TypeScript 路线图也包括了实现修订后的 ES 装饰器提案的计划。

其他正在开发中的新 Babel 功能包括 minify、插件顺序、更好的验证 / 错误、异步使用 Babel,等等。有关详细信息,请参阅 Babel 路线图

Babel 基于 MIT 开源许可。欢迎开发者通过 Babel GitHub 组织参与贡献,并遵守 Babel 的贡献指南行为准则。也可以通过 Open Collective 进行捐款来支持该项目。

查看英文原文 Babel 7 Release Improves Support for ES.Next Proposals and TypeScript

2018-11-01 17:021568
用户头像

发布了 79 篇内容, 共 31.9 次阅读, 收获喜欢 119 次。

关注

评论 1 条评论

发布
暂无评论
发现更多内容

游戏夜读 | 关于构图的困难

game1night

你会写测试用例吗

RocketMQ - 高可用设计

Java收录阁

RocketMQ

不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏...

JackTian

GitHub 学习 开源 程序员 编码

MAC OS 下 HomeBrew 使用

耳东@Erdong

macos brew homebrew

B端产品经理养成记(2):用户故事

涛哥 数字产品和业务架构

产品经理 需求 产品开发

Apache DolphinScheduler新特性与Roadmap路线

代立冬

大数据 数据中台 工作流调度 海豚调度 数据湖调度

钢铁侠马斯克之仰望星空

池建强

创业 马斯克 Space X

工作 vs 生活

shengjk1

写博客的那些事

shengjk1

Element-UI实战系列:Table+Pagination组件实现已选和全选功能

AR7

Vue 大前端 Element

ARTS week2

紫枫

ARTS 打卡计划

ARTS Week1

姜海天

draw.io-取代visio的流程图绘制工具

Rice嵌入式开发技术分享

chrome vscode 写文章神器 draw.io

做PO难,难于上青天

刘华Kenneth

敏捷 产品经理 决策 PO

转行程序员浅谈进程间的socket通信

WB

Linux 程序员 socket

工厂模式(四)泛型工厂之MyBatis Mapper代理

LSJ

Java 设计模式 泛型 工厂注册中心

Kafka系列9:面试题是否有必要深入了解其背后的原理?我觉得应该刨根究底(上)

z小赵

大数据 kafka 实时计算

ARTS打卡Week 02

teoking

objective-c LeetCode WebRTC

时代在变,产品运营能力很重要

punkboy

程序员 程序人生 产品经理 产品推荐 程序媛

【ARTS打卡】Week01

Rex

学习

B端产品经理养成记(1):业务场景

涛哥 数字产品和业务架构

产品经理 需求 产品开发

ARTS打卡第一周5.25-5.31

我笔盒呢

如何用CSS选择符(数字开头) 杀死队友

德育处主任

Java html css3 大前端 Web

ARTS week 2

刘昱

【5月】本月读书学到了什么

Neco.W

创业 读书感悟 阅读量

使用Kotlin语言初始化数组

mengxn

数组 kotlin 初始化

John 易筋 ARTS打卡Week 02

John(易筋)

ARTS 打卡计划 ARTS活动 arts

【openlayers】在vue中使用ol

德育处主任

Java html Vue 地图 openlayers

愚蠢写作术(1):怎么让你的标题被读者忽视

史方远

个人成长 写作

RocketMQ - 如何实现事务消息

Java收录阁

RocketMQ

Babel 7 支持 ES.Next 提案和 TypeScript_其他_Dylan Schiemann_InfoQ精选文章