【发布时间】:2017-03-14 14:14:01
【问题描述】:
为了设置 webpack + babel + react,我被告知在 .babelrc 中包含以下内容:
"presets": ["latest", "stage-0", "react"]
我想了解:为什么要使用 babel 预设,它们允许我做什么(除了 babel 本身)?这是一个问题。希望这不是基于意见的(就 stackoverflow 而言),而是关于 babel 的工作原理。
据我在docs, preset-latest 中读到的,结合了preset-es2015 + preset-es2016 + preset-es2017。据我了解,这些是即将推出的 ES 版本的官方接受的功能,而 latest 不仅是选择 ES2015 的简写,而且是一次性选择所有未来版本的简写。规格不会改变,因此它足够稳定,可以在生产中使用。
但是stage-0、stage-1、stage-2、stage-3 怎么样?它们代表的功能仍然是即将推出的 ECMAScript 版本的非官方提议,还是代表其他东西? Babel docs 对此并不清楚。这是第二个问题。
最后,插件和预设有什么区别?
【问题讨论】:
-
文档似乎涵盖了您的大部分问题:“现在,开箱即用的 Babel 不做任何事情。它基本上就像
const babel = code => code;通过解析代码然后生成再次输出相同的代码。您需要为 Babel 添加一些插件才能执行任何操作(它们会影响第二阶段,转换)。预设不想组装自己的插件集?没问题!预设是可共享的.babelrc配置或只是一组 babel 插件。每个年度预设仅编译当年批准的内容。使用预设最新来转换所有年度预设。"... -
... "Stage-X (Experimental Presets) stage-x 预设中的任何转换都是对尚未获准加入的语言的更改Javascript 的一个版本(例如 ES6/ES2015)。” babeljs.io/docs/plugins
标签: javascript ecmascript-6 babeljs