[英]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.