Babel 6预设的顺序是否重要?

30

列出预设时,顺序是否重要?

换句话说,以下的 .babelrc 文件等效吗?

.babelrc #1

{
  "presets": ["es2015", "stage-2", "react"]
}

.babelrc #2

.babelrc #2

{
  "presets": ["react", "stage-2", "es2015"]
}

好问题。我认为它们按顺序扩展并使用最终列表,但如果两个预设对同一插件具有不同的选项,我不确定会发生什么。 - ssube
1
https://dev59.com/ZVsW5IYBdhLWcg3wwZcP - Dominic K
1个回答

51

来自babeljs.io/docs/plugins(截至2016年9月30日):

插件/预设排序

每个访问者在插件中的顺序都很重要。这意味着如果两个转换都访问“Program”,那么这些转换将按照插件或预设的顺序运行。

插件在预设之前运行。

插件顺序是从第一个到最后一个。

"plugins": [
  "transform-decorators-legacy", // will run first
  "transform-class-properties" // will run second
]

预设顺序已经反转(从后往前)。

是的,这很令人困惑,请参考babel/notes #2

我认为之所以这样做(为了向后兼容),是因为大多数用户将“es2015”列在第一位,“stage-0”列在第二位。而 stage-0 会在 es2015 之前运行。

"presets": [
  "es2015", // will run third
  "react", // will run second
  "stage-2" // will run first
]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接