.babelrc 中插件和预设的区别
Difference between plugins and presets in .babelrc
情况
所以我有一个 .babelrc
这样的:
{
"presets": [
"es2015",
"stage-2",
"react"
],
"plugins": [
"transform-decorators-legacy"
]
}
问题
预设和插件有什么区别?我应该使用哪一个来配置 Babel?
tl;博士
预设只是插件的集合。您可以在 plugins
数组中单独包含插件,或在 presets
数组中包含插件集合。如果插件是集合(预设)的一部分,则不必将其单独包含在 plugins
.
中
将 npm 包包含在 package.json
中时也是如此。
预设与插件
Babel 有很多 official and third party plugins. Presets are collections of plugins or as they say:
Presets are sharable .babelrc
configs or simply an array of babel plugins.
两者的一个重要区别是plugins are loaded before presets.
预设的插件
最常见的预设是 official ones and the discontinued experimental presets。
大多数官方预设包含用于转换 EcmaScript 标准功能的插件,而实验性 (stage-x) 预设包含用于转换未来实验性功能的插件,其标准化工作仍在进行中。这些 experimental/proposal 预设自 Babel 7 以来已弃用。它们有一个 blog entry on the reasons。阅读以下部分以了解它们的工作原理。
当您单击预设时,您可以看到其中包含哪些插件(可能还有其他预设)。如果您通过预设包含插件,则不必单独包含它。当您包含预设的 npm 包时,package.json
也是如此。
弃用提案预设系统
从第 0 阶段(只是一个想法)到第 3 阶段(候选),您拥有更接近标准化的插件集合。因此,当您包含一个预设时,每个具有更高 stage-x 值的预设也会被包含在内。这些预设中包含的插件在每个版本中不断变化,因为它们是一项正在进行的工作,如果插件被拒绝,它们可能会被删除。这就是为什么你需要 transform-decorators-legacy because, decorator transpiling was earlier removed from Babel, although they added it back later.
情况
所以我有一个 .babelrc
这样的:
{
"presets": [
"es2015",
"stage-2",
"react"
],
"plugins": [
"transform-decorators-legacy"
]
}
问题
预设和插件有什么区别?我应该使用哪一个来配置 Babel?
tl;博士
预设只是插件的集合。您可以在 plugins
数组中单独包含插件,或在 presets
数组中包含插件集合。如果插件是集合(预设)的一部分,则不必将其单独包含在 plugins
.
将 npm 包包含在 package.json
中时也是如此。
预设与插件
Babel 有很多 official and third party plugins. Presets are collections of plugins or as they say:
Presets are sharable
.babelrc
configs or simply an array of babel plugins.
两者的一个重要区别是plugins are loaded before presets.
预设的插件
最常见的预设是 official ones and the discontinued experimental presets。
大多数官方预设包含用于转换 EcmaScript 标准功能的插件,而实验性 (stage-x) 预设包含用于转换未来实验性功能的插件,其标准化工作仍在进行中。这些 experimental/proposal 预设自 Babel 7 以来已弃用。它们有一个 blog entry on the reasons。阅读以下部分以了解它们的工作原理。
当您单击预设时,您可以看到其中包含哪些插件(可能还有其他预设)。如果您通过预设包含插件,则不必单独包含它。当您包含预设的 npm 包时,package.json
也是如此。
弃用提案预设系统
从第 0 阶段(只是一个想法)到第 3 阶段(候选),您拥有更接近标准化的插件集合。因此,当您包含一个预设时,每个具有更高 stage-x 值的预设也会被包含在内。这些预设中包含的插件在每个版本中不断变化,因为它们是一项正在进行的工作,如果插件被拒绝,它们可能会被删除。这就是为什么你需要 transform-decorators-legacy because, decorator transpiling was earlier removed from Babel, although they added it back later.