写点什么

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:021626
用户头像

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

关注

评论 1 条评论

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

5分钟教你如何利用华为云IoT进行物联网设备上云

wljslmz

物联网 IoT 华为云 9月月更

在线编码、格式转换

人生如梦

React 在线格式化 在线编码 转码工具

如何刻意练习-中秋读书随笔

刘旭东

刻意练习

极速导入elasticsearch测试数据

程序员欣宸

elasticsearch 9月月更

Qt实现文本编辑器(一)

中国好公民st

c++ qt 9月月更

中秋阅读计划 | 有趣不枯燥的“小薄书”

图灵社区

程序员 科普 计算机 书单 中秋

库调多了,都忘了最基础的概念-《死锁与范式的碰撞》

知识浅谈

死锁 范式 9月月更

VUE v-for 循环的 2 个使用

HoneyMoose

腾讯前端面试题合集

beifeng1996

JavaScript 前端

中秋阅读计划 | 有趣不枯燥的“小薄书”

图灵教育

程序员 科普 计算机 书单 中秋节

许世伟老师架构课笔记分享

AiDaddy

架构师 需求设计

TCP/IP参考模型

StackOverflow

编程 计算机网络 9月月更

Nvm的安装及使用(Nodejs版本管理器)

node.js NVM 9月月更

Python 教程之变量(2)—— Python中整数的最大可能值是多少?

海拥(haiyong.site)

Python 9月月更

AQS 阻塞队列机制源码分享

new life

AQS

京东前端一面面试题

bb_xiaxia1998

JavaScript 前端

力扣349 - 两个数组的交集【哈希表+数组+双指针】

Fire_Shield

双指针 哈希表 9月月更

LeetCode-454. 四数相加 II(Java)

bug菌

9月日更 Leet Code 9月月更

数据治理(十三):Ranger 安装与启动

Lansonli

数据治理 9月月更

Java进阶(十四)实现每天定时对数据库的操作

No Silver Bullet

Java 数据库 9月月更

开始思考吧

吴京

学习 思考 思想

【iOS逆向】某不知名App越狱检测

小陈

iOS逆向

B-Tree索引

急需上岸的小谢

9月月更

C++学习------cmath头文件的源码学习04

桑榆

c++ 源码阅读 9月月更

Python 教程之变量(3)—— 全局变量和局部变量

海拥(haiyong.site)

Python 9月月更

架构师的十八般武艺:架构边界

agnostic

架构边界

LeetCode-164. 最大间距(Java)

bug菌

9月日更 Leet Code 9月月更

【Nacos云原生】阅读源码第一步,本地启动Nacos

石臻臻的杂货铺

云原生 nacos 9月月更

力扣15 - 三数之和【奇妙的双指针】

Fire_Shield

双指针 LeetCode 9月月更

算法基础(一)| 快速排序和归并排序详解

timerring

算法 9月月更

关于 SAP UI5 所有控件的共同祖先 - sap.ui.base.ManagedObject

汪子熙

SAP Fiori SAP UI5 ui5 9月月更

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