繁体   English   中英

标准的babel预设要求

[英]standard babel presets requirements

为了设置webpack + babel + react,我被告知在.babelrc包含以下.babelrc

"presets": ["latest", "stage-0", "react"]

我想明白:为什么我应该使用babel预设,他们允许我做什么(除了babel本身)? 这是一个问题。 希望这不是基于意见的(就stackoverflow而言),它是关于babel如何工作的。

据我在文档中所preset-latest组合了preset-es2015 + preset-es2016 + preset-es2017 据我所知,这些是即将推出的ES版本的正式接受功能,最新版本不仅仅是选择ES2015,而是一次性选择所有未来版本的简写。 规格不会改变,所以它足够稳定,可以用于生产。

但是, stage-0 stage-1 stage-2 stage-3 - 它们是否代表了即将推出的ECMAScript版本仍然是非官方提案的功能,还是代表其他东西呢? Babel docs对此并不清楚。 那是第二个问题。

最后, 插件预设有什么区别?

...为什么我应该使用babel预设,他们允许我做什么...

Babel预设方便地定义了一组Babel插件,这样您就不必明确声明要在.babelrc "plugins"下使用它们(或者在您声明配置的任何地方)。

看看es2016预设的源代码,你会看到我的意思......它只是输出一系列插件: https//github.com/babel/babel/blob/master/packages/babel-预设es2016 / SRC / index.js

......(除了巴贝尔本身)?

Babel本身就是其插件的接口 它利用兄弟程序babylon ,一个acorn分支,为插件提供解析,检查,然后操作程序源代码的特定方式,以便根据您使用的插件添加所需的功能。

最后,插件和预设有什么区别?

如上所述,预设本身不包含功能,而是包含插件列表。 这些通常代表一些相关的功能组。 例如, stage-0预设将包含实现提议功能的所有插件,这些插件位于由TC39(ECMAScript的“管理机构”)定义的提交过程的第0阶段。

您可能已经注意到预设是JavaScript文件而不是JSON。 这是因为预设定义的插件列表可以从配置中派生。 看看env预设,例如: https//github.com/babel/babel-preset-env/blob/master/src/index.js

但是,0阶段,第1阶段,第2阶段,第3阶段如何 - 它们是否代表了即将推出的ECMAScript版本仍然是非官方提案的功能,还是代表其他东西呢?

没有“官方”提案。 任何人都可以提交提案。 但是,如果官方的意思是该提案是否得到认真考虑,则由1)在此过程中处于什么阶段以及2)社区普遍考虑其作为新功能的价值。 然而,你应该总是接受一些盐的提议,即使是在最后阶段它们是否会被接受,正如我们在Object#observe经历的那样,它在最后一分钟删除了

我也不明白为什么"modules": false以及为什么有“env”设置并且env有自己的预设配置。

最后,我发现这篇文章在我们的.babelrc中有什么? 解释得很好,例如

其次,我们将模块设置为false以确保导入语句保持原样(反对将它们转换为需要)。 我们这样做是为了让Webpack能够静态分析我们的代码以生成更高效的bundle。

最后,我们为Jest提供了一个特定于环境的覆盖,这是我们选择的测试框架。 由于Jest在节点中运行,我们需要将我们的导入转换为需求,并定位我们当前正在处理的任何节点运行时。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM