【问题标题】:Babel v7? Is it core-v7, cli-v7? or all packages are upgraded?通天塔 v7?是core-v7,cli-v7吗?还是所有软件包都升级了?
【发布时间】:2019-02-22 01:54:50
【问题描述】:
我知道 Babel 是一个 monorepo,包含很多包,如核心、cli、插件、预设等。
- 当他们说升级到 Babel
v7.x.x 时,他们真正的意思是什么。这是否意味着将monorepo中的每个packages升级为v7.x.x?
- 如果我将核心包升级到
babel-core-v7.x.x。那么这是否意味着如果我仍然在.babelrc 中提供stage-x 预设,核心包将无法理解它,因此不会使用预设中的插件进行转译。(因为stage-presets 在v7.x.x 中已弃用)
-
Babel Docs for Decorator plugin 在这里他们说,
In Babel 7, transform-decorators-legacy will be the default plugin in Stage-0. 如果舞台预设(即 stage-x(0,1,2,3))被弃用,他们在这里是什么意思。
【问题讨论】:
标签:
javascript
upgrade
babeljs
【解决方案1】:
玩了一会儿,我发现了这个。
-
Babel 是一个单仓库,里面有很多包。获取原始代码并转换为新代码的主要 babel 包是 babel-core。它本身不做任何事情,它只是返回相同的代码。
-
Babel-core 或 babel 可以接受可能包含大量插件、预设(捆绑的插件集)的配置。这些插件负责转换代码。例如。您可以在代码中使用 ES6 箭头函数。然后,您可以使用转换箭头函数的插件运行 babel,以获得 ES5 版本的箭头函数。
- 现在 Babel v7.x.x 是一个主要(根据语义版本控制)版本更改(从 6.x.x 到 7.x.x),因此预计会有重大更改。因此,如果您只是更改 babel 核心版本,则代码预计会中断。因此,他们也提供了迁移指南。
- 在版本 7.x.x 中,插件/预设的方式被强制要求针对版本 6.x.x 返回一个函数,在该版本中它可以返回一个对象或函数。因此,如果您尝试使用 v6 插件,该插件返回带有 v7 核心的对象,它将失败。他们还删除了 stage-x 预设。因此,如果您的配置中有这些,它也会中断。有很多这样的变化。请参阅迁移指南。
- 要回答 #3,我已与那里的团队确认,文档尚未更新。